我有一个运行debian和php5-fpm的网络服务器(nginx)似乎随机播放,如果我调用php文件,它将以504错误的网关答复。
当它处于崩溃状态并且我执行sudo /etc/init.d/php5-fpm时,它说它正在运行,但是在我执行sudo /etc/init.d/php5-之前,它仍然会提供504错误的网关。 fpm
我在想这可能与我的一个php文件有关,该文件处于无限循环中,直到发生某个事件(mysql数据库中的更改)或直到它超时为止。我不知道这通常是否是件好事,还是我应该在发生超时之前退出循环。
感谢您的建议!
最佳答案
首先查看nginx error.log中的实际错误。我不认为PHP会崩溃,只是您的循环正在使用所有可用的php-fpm进程,因此没有免费的服务来满足nginx的下一个请求。那应该在日志中产生超时错误(nginx将等待一段时间以等待可用的php-fpm进程)。
关于第二个问题。您不应该为此使用无限循环。而且,如果这样做,请在循环内插入sleep()
命令-否则,您将使该循环的CPU以及查询数据库过载。
另外,我想在该循环中有一个PHP进程等待事件就足够了。在这种情况下,请使用某种类型的信号量(db中的文件或信息)让其他进程知道已经在等待该事件。否则,您将永远吃光所有可用的PHP进程。
关于nginx - php5-fpm崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541737/