我有一个运行debian和php5的php服务器(nginx),php5-fpm似乎随机崩溃,如果我调用php文件,它会回复504坏网关。
当它处于崩溃状态时,当我执行sudo /etc/init.d/php5-fpm时,它会说它正在运行,但在我执行sudo /etc/init.d/php5-fpm之前,它仍然会给出504坏网关
我在想,这可能与我的一个php文件有关,这个文件一直处于无限循环中,直到某个事件发生( mysql数据库中的更改),或者直到它超时。我不知道这是不是一件好事,或者我是否应该让循环在超时发生之前退出。
谢谢你的建议!
发布于 2015-04-23 16:31:20
首先查看nginx error.log中的实际错误。我不认为PHP崩溃了,只是你的循环正在使用所有可用的php-fpm进程,所以没有空闲的进程来服务你下一个来自nginx的请求。这应该会在日志中产生超时错误(nginx将等待一段时间以等待可用的php-fpm进程)。
关于你的第二个问题。你不应该为此使用无限循环。如果你这样做了,在循环中插入sleep()命令-否则你的CPU会因该循环而超载,数据库也会因查询而超载。
另外,我想让一个PHP进程在该循环中等待事件就足够了。在这种情况下,使用某种类型信号量(db中的文件或信息)让其他进程知道某个进程已经在等待该事件。否则,您总是会吃掉所有可用的PHP进程。
https://stackoverflow.com/questions/14541737
复制相似问题