Apache-2.2
apache worker + php fastcgi,長腳本
我的問題是長 php 腳本(幾個小時)提前退出。(FireFox 說“頁面載入時與伺服器的連接已重置”)。
他們有時會在 30 分鐘後退出,有時會在 1:45 小時執行時間後退出。
- CentOS 6.6 64位
- Apache 2.2.9 MPM 工作者
- php 5.5.20 mod_fcgid 2.3.9
- 未安裝操作碼記憶體
- cPanel 和 WHM 11.46
- 我有root權限
對於 FastCGI,我通過 WHM 包含編輯器將以下內容添加到 httpd.conf 到 post_virtualhost:
<IfModule mod_fcgid.c> FcgidBusyTimeout 86400 FcgidIOTimeout 86400 </IfModule>
在 IfModule 部分之後,我有 <Directory path/to/mysite> 部分(’<’ 之後沒有空格)。
我在腳本中多次使用 set_time_limit() 和 ignore_user_abort() 來保持它的執行。
apache 錯誤日誌中沒有任何內容。
phpinfo:http : //lot-art.com/info.php(你可以看到 set_time_limit() 和 ignore_user_abort() 有效)
它在我執行 mod_php 的舊伺服器上執行良好:http: //216.119.148.91/info.php
只需通過 cron / 等執行與網路伺服器分開的腳本。
如果您需要從網路伺服器執行它… popen(nohup ..) 並在 cli 上執行腳本…
我的猜測是網路伺服器/瀏覽器連接超時/失敗,最終 TCP 堆棧說,“我們在這裡完成了”,並且 php 程序被拆除。我不想想像一個瀏覽器視窗等待幾個小時等待腳本完全的…
如果您真的想這樣做..並且問題確實是客戶端連接問題,您可以查看在腳本/php.ini 中將 ignore-user-abort 設置為 true …