首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

IIS 下 PHP 三種執行模式對比:CGI、ISAPI、FastCGI 效能與配置差異詳解

     編輯:PHP 綜合知識

背景

Windows Server 2003 (IIS 6.0) 時代常見三種 PHP 執行模式。雖 IIS 6 已淘汰,但架構原理對理解現代 PHP-FPM、IIS 7+ FastCGI 模組仍有參考價值。

模式對比總覽

特性CGIISAPIFastCGI
進程模型每請求啟動新進程DLL 載入 IIS 工作進程常駐進程池,管理器調度
進程隔離完全隔離共享 IIS 進程空間獨立進程池,可多池隔離
效能極差 (重複啟動開銷大)好 (進程內、無切換)優 (持久進程、可伸縮)
穩定性高 (崩潰不影響 IIS)低 (PHP 崩潰拖垮 IIS)高 (進程隔離、自動重啟)
併發處理單進程單請求多執行緒共享多進程 + 多執行緒
配置複雜度低中中高
現代支援已淘汰已淘汰 (PHP 5.3+ 移除)標準 (PHP-FPM / IIS FastCGI)

ISAPI 配置要點 (歷史參考)

  1. IIS → Web 服務擴展 → 新增 → php5isapi.dll。
  2. 系統環境變數 PHPRC 指向 php.ini 目錄。
  3. 網站屬性 → 主目錄 → 配置 → 映射 → .php → php5isapi.dll。
  4. 重啟 IIS。

缺陷:PHP 非執行緒安全 (NTS) 版本在 ISAPI 多執行緒下極易崩潰;需用 Thread Safe (TS) 版本,但擴展相容性差。

FastCGI 配置步驟 (IIS 6.0 + FastCGI Extension)

  1. 下載 fcgiext.dll (32-bit) 安裝至 system32\inetsrv。
  2. 註冊 PHP 解釋器:
    cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\php\php-cgi.exe"
  3. IIS 映射 .php → fcgiext.dll。
  4. 修改 php.ini:
    fastcgi.impersonate = 1
    cgi.fix_pathinfo = 1
    cgi.force_redirect = 0
  5. 調整進程參數:
    cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000
    cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000
  6. 授予 IIS_WPG 群組 C:\php 讀取/執行權限。

現代最佳實踐 (IIS 7.5+ / Windows Server 2008 R2+)

  • 安裝 IIS FastCGI 模組 (內建角色服務)。
  • 使用 PHP Manager for IIS 圖形化管理版本、擴展、錯誤頁面。
  • 啟用 WinCache 擴展 (Opcode 快取 + 檔案快取 + 會話快取),大幅提升效能。
  • 應用程式池設定:.NET CLR 版本 = 無管理代碼、管線模式 = 整合、閒置逾時 = 0 (長跑)。
  • PHP 使用 Non-Thread Safe (NTS) 版本搭配 FastCGI,效能最佳。

結語

CGI/ISAPI 已成歷史。現代 Windows + PHP 生產環境**唯一推薦** FastCGI (PHP-FPM / IIS FastCGI),配合 WinCache、OpCache、合理進程池設定,效能可媲美 Linux + Nginx + PHP-FPM。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved