解決 IIS 的 PHP 發生 FastCGI 處理序超過設定的活動逾時問題
今天在執行 WordPress 上的版本更新時,因為更新檔案太大,出現了錯誤「FastCGI 處理序超過設定的活動逾時」。
這是執行 FastCGI 過久而發生的 Timeout 的問題,要修改 FastCGI Timeout 設定需要到 IIS 的設定檔。
修改 IIS 設定檔
路徑為: C:\Windows\System32\inetsrv\config\applicationHost.config
用純文字開啟 applicationHost.config
然後搜尋 「<fastCgi>」,找到以下設定
1 2 3 |
<fastCgi> <application fullPath="E:\Project\WebServer\php-7.4.7-nts-Win32-vc15-x64\php-cgi.exe" /> </fastCgi> |
fullPath 的設定值依個人環境有所不同。
增加 fastCgi /application 的 timeout 設定 requestTimeout="900" activityTimeout="180"
修改後的結果為
1 2 3 |
<fastCgi> <application fullPath="E:\Project\WebServer\php-7.4.7-nts-Win32-vc15-x64\php-cgi.exe" requestTimeout="900" activityTimeout="180"/> </fastCgi> |
修改說明
requestTimeout:
指定應用程式提出要求的允許時間上限。 如果 FastCGI 處理序處理單一要求時所花費的時間超過指定的時間長度,系統就會終止此處理序。 預設值為 90 秒,建議修改值為 900 秒。
activityTimeout:
指定應用程式的 FastCGI 處理序逾時之前,允許此處理序未與 IIS 通訊執行的時間長度上限。 這個逾時值可用來偵測並關閉停止回應的處理序。 預設值為 30 秒,建議修改值為 180 秒。
修改完成之後,在重啟 IIS 上的網站就可以了喔。
想要快速的重啟 IIS,可以在”命令提示字元”輸入這個指令 iisreset
。
FastCGI 是什麼?
FastCGI 是 IIS 與 PHP 之間的溝通閘道器。
在講 FastCGI 前先解釋一下 CGI,CGI 全稱是「公共閘道器介面 (Common Gateway Interface)」,HTTP 伺服器與你的或其它機器上的程式進行交談的一種工具,其程式須執行在網路伺服器上。
而 FastCGI 是一種常駐型的 CGI,當 PHP 啟動時、會去尋找 php.ini,進行環境的初始化,如果不使用 FastCGI 的情況下,每一個請求都會做這個動作,很明顯浪費系統資源,所以 FastCGI 會先啟動一個 master,解析配置文件用,接下來再啟動 worker,當請求過來時,master 會遞資訊給 worker,然後接下來等下一個請求,有這個機制就不用每一次重新跑一次初始化的動作了。
想要了解更多的 IIS 上相關 FastCGI 設定,可參考以下網址:
https://forsenergy.com/zh-tw/inetsrvmmc/html/e3ce5574-abc0-4108-a8f7-d7ac6452a534.htm
相關學習文章
- WordPress 安裝佈景主題遇到 No working transports found 錯誤
- Windows Server IIS 如何安裝 PHP 網頁伺服器
- 如何讓 IIS 底下的 PHP 顯示錯誤內容 (500 Error)
如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝