Windows Server 2003 (IIS 6.0) 時代常見三種 PHP 執行模式。雖 IIS 6 已淘汰,但架構原理對理解現代 PHP-FPM、IIS 7+ FastCGI 模組仍有參考價值。
| 特性 | CGI | ISAPI | FastCGI |
|---|---|---|---|
| 進程模型 | 每請求啟動新進程 | DLL 載入 IIS 工作進程 | 常駐進程池,管理器調度 |
| 進程隔離 | 完全隔離 | 共享 IIS 進程空間 | 獨立進程池,可多池隔離 |
| 效能 | 極差 (重複啟動開銷大) | 好 (進程內、無切換) | 優 (持久進程、可伸縮) |
| 穩定性 | 高 (崩潰不影響 IIS) | 低 (PHP 崩潰拖垮 IIS) | 高 (進程隔離、自動重啟) |
| 併發處理 | 單進程單請求 | 多執行緒共享 | 多進程 + 多執行緒 |
| 配置複雜度 | 低 | 中 | 中高 |
| 現代支援 | 已淘汰 | 已淘汰 (PHP 5.3+ 移除) | 標準 (PHP-FPM / IIS FastCGI) |
php5isapi.dll。PHPRC 指向 php.ini 目錄。.php → php5isapi.dll。缺陷:PHP 非執行緒安全 (NTS) 版本在 ISAPI 多執行緒下極易崩潰;需用 Thread Safe (TS) 版本,但擴展相容性差。
fcgiext.dll (32-bit) 安裝至 system32\inetsrv。cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\php\php-cgi.exe".php → fcgiext.dll。php.ini:fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
cgi.force_redirect = 0cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000
cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000IIS_WPG 群組 C:\php 讀取/執行權限。.NET CLR 版本 = 無管理代碼、管線模式 = 整合、閒置逾時 = 0 (長跑)。CGI/ISAPI 已成歷史。現代 Windows + PHP 生產環境**唯一推薦** FastCGI (PHP-FPM / IIS FastCGI),配合 WinCache、OpCache、合理進程池設定,效能可媲美 Linux + Nginx + PHP-FPM。