apache worker + php fastcgi,长脚本

我的问题是,长的PHP脚本(几个小时)正在退出提前。 (FireFox表示“加载页面时,服务器的连接重置”)。

有时在30分钟后退出,有时在1小时45分钟后退出。

  • CentOS 6.6 64bit
  • Apache 2.2.9 MPM worker
  • php 5.5.20 mod_fcgid 2.3.9
  • 没有安装操作码caching
  • cPanel和WHM 11.46
  • 我有root权限

对于FastCGI,我通过WHM包含编辑器将以下内容包含到httpd.conf中以post_virtualhost:

<IfModule mod_fcgid.c> FcgidBusyTimeout 86400 FcgidIOTimeout 86400 </IfModule> 

之后,IfModule节我有<目录path/到/ 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 /等networking服务器的脚本单独

如果你需要从networking服务器运行… popen(nohup ..)并运行脚本上的cli …

我的猜测是,networking服务器/浏览器连接超时/失败,最终TCP堆栈说:“我们在这里完成”和PHP进程被拆除..我不愿意想象一个浏览器窗口等待几个小时的脚本完成…

如果你真的想这样做,而问题确实是一个客户端连接问题,你可以看看在脚本/ php.ini中设置ignore-user-abort为true …

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

这可能是由于PHP 5.5中的错误吗? 像分段错误会导致PHP立即退出 – 不会有任何错误loggingAFAIK。

我同意你应该从命令行运行它,如果它是seg-fault或类似的,那么尝试运行gdb来获得一个核心转储,并将其报告为一个bug: https://bugs.php。净/

如果这不是一个选项,我会尝试添加日志logging到任务,以缩小脚本在什么时候退出。