我在 nginx 代理后面运行 php5,作为 Fast_CGI,经过一段时间使用后(始终在使用时,而不是空闲时)。Fast_CGI 服务器刚刚关闭(不再显示在“ps -A”中)。
在 php.ini 中,Log_Errors 设置为 On,Error_Log 设置为 /var/log/php.log,但是如果查看 php.log,则只会显示启动错误,没有任何内容表明 php 已关闭。
答案1
当您没有得到任何输出时,找出问题所在的最佳方法是在 strace 下运行 php。启动 php 并从 ps 获取 pid 列表。然后运行:
# strace -f -o /tmp/php.strace.log -p pid1 -p pid2 -p pid3 ....
一旦 PHP 死亡,请查看日志看看发生了什么。
话虽如此,在您的特定情况下,我怀疑您的环境变量有误。如果您有一个 php 进程,这将与我的预感一致。PHP 有一个选项可以在一定数量的请求后终止。这是一个明智的做法,可以防止内存泄漏和其他此类问题。还有一个选项可以指定同时运行的进程数。如果只有一个进程,在经过一定数量的请求后,它将终止。解决方案是运行多个进程。我使用的选项是:
导出 PHP_FCGI_CHILDREN=4 导出 PHP_FCGI_MAX_REQUESTS=1000
如果您将这些行放入用于启动 php 服务器的脚本中,您会发现您的 PHP 网站仍在运行。:)