2

我有一个运行 debian 和 php5-fpm 的网络服务器(nginx)随机似乎崩溃,如果我调用 php 文件,它会回复 504 bad gateway。

当它处于崩溃状态并且我执行 sudo /etc/init.d/php5-fpm 它说它正在运行,但它仍然会给出 504 bad gateway 直到我执行 sudo /etc/init.d/php5- fpm

我在想这可能与我的一个 php 文件有关,该文件处于无限循环中,直到某个事件发生(mysql 数据库中的更改)或直到它超时。我不知道这通常是否是一件好事,或者我是否应该在超时发生之前让循环自行退出。

谢谢指教!

4

1 回答 1

0

首先查看 nginx error.log 中的实际错误。我不认为 PHP 崩溃了,只是你的循环正在使用所有可用的 php-fpm 进程,所以没有免费的可以为你的下一个来自 nginx 的请求提供服务。这应该会在日志中产生超时错误(nginx 将等待一段时间以获得可用的 php-fpm 进程)。

关于你的第二个问题。您不应该为此使用无限循环。如果这样做,请sleep()在循环内插入命令 - 否则您将使用该循环使 CPU 过载,并且还会使用查询使数据库过载。

此外,我想在该循环中有一个 PHP 进程等待事件就足够了。在这种情况下,使用某种类型的信号量(数据库中的文件或信息)让其他进程知道一个已经在等待该事件。否则你总是会吃光所有可用的 PHP 进程。

于 2015-04-23T08:31:20.430 回答