Apache-2.2

apache worker + php fastcgi,長腳本

  • January 16, 2015

我的問題是長 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 …

http://php.net/manual/en/function.ignore-user-abort.php

引用自:https://serverfault.com/questions/660097