PHP作为fast_cgiclosures没有日志

我在一个nginx代理的后面运行了php5,像Fast_CGI一样,在使用之后(一直在使用,而不是在空闲时),Fast_CGI服务器closures(不再显示在'ps -A'中。

在php.ini中,Log_Errors设置为On,Error_Log设置为/var/log/php.log,但是如果只查看php.log中的启动错误,则什么也不会意味着phpclosures。

找不到任何输出的问题的最好方法是在strace下运行php。 启动PHP并从ps获得pid列表。 然后运行:

  #strace -f -o /tmp/php.strace.log -p pid1 -p pid2 -p pid3 .... 

一旦PHP死亡,查看日志,看看会发生什么。

话虽如此,在你的特定情况下,我怀疑你的环境variables是错误的。 如果你有一个单一的PHP过程,这将符合我的预感。 PHP有一个选项来终止一定数量的请求。 这是防止内存泄漏和其他此类问题的明智之举。 还有一个选项可以指定同时运行的进程的数量。 如果只有一个进程,在多个请求之后,它将会死亡。 解决scheme是运行多个进程。 我使用的选项是:

导出PHP_FCGI_CHILDREN = 4
导出PHP_FCGI_MAX_REQUESTS = 1000

如果你把这些行放在你用来启动你的PHP服务器的脚本中,你应该会发现你的PHP网站仍然在运行。 🙂