我正在用php作为fcgi运行nginx。 它工作得很好,但是,php-cgi在服务500个请求后继续退出()。 我试着增加这个值(PHP_FCGI_MAX_REQUESTS),而且工作,但似乎是一个解决方法。 然后我将它设置为0,并没有退出()。 但我认为有一个原因,为什么php-cgi应该重新启动。 目前,我正在用spawn-fcgi运行php-cgi:当php进程退出时,spawn-fcgi也退出。 现在,有没有办法自动重新启动PHP(没有肮脏的黑客,如while [ 1 ]; do spawn-fcgi; done等)?
有什么理由不能切换到PHP-FPM? 它来与PHP> = 5.3,并有一个补丁,使其为5.2。 我已经使用了大约一年的时间,并且没有任何问题,它是完全稳定的。 这会使你的进程产卵问题消失,因为PHP-FPM将透明地处理旧的进程并为你重新启动新的进程。
PHP_FCGI_MAX_REQUESTS的原因是PHP会在一定数量的请求之后随机停止响应请求。 看来这个bug在新版本中可能已经部分修复了,但是在5.2.x的testing中,我发现它发生了多次。
multiwatch是为此devise的(重新启动由spawn-fcgi运行的subprocess) – 参见http://cgit.stbuehler.de/gitosis/multiwatch/about/