为什么PHP-FPM需要5分钟才能在我的服务器上重启?

时间:2013-09-24 21:16:26

标签: php fastcgi

我正在使用默认设置的PHP-FPM。我的服务器正在运行最新的Arch Linux。

我发出命令sudo systemctl restart php-fpm,重启并返回提示需要五分钟。

这个问题是否有已知的解决方案?

1 个答案:

答案 0 :(得分:2)

这是由创建PHP-FPM的systemctl脚本的方式引起的。我也有同样的问题。以下是我如何解决它。

首先找到你的启动脚本,如果你不知道你可以做systemctl status php-fpm,你会看到类似的东西:/etc/systemd/system/php.service

现在编辑此文件,它应如下所示:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
PIDFile=/run/php-fpm/php-fpm.pid
PrivateTmp=true
ExecStart=/usr/bin/php-fpm --nodaemonize --pid /run/php-fpm/php-fpm.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

将其更改为:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
ExecStart=/usr/bin/php-fpm --nodaemonize
ExecReload=/bin/kill -HUP $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target

更改文件之一运行此命令以刷新systemctl - > systemctl daemon-reload

现在重启FPM。我建议在更改此文件之前先关闭FPM。一旦进行了更改,FPM将立即启动/停止/重新启动。

现在我还不知道为什么到目前为止,但有时候我做了这个改变后,看起来FPM仍然需要永远启动/停止/重启。所以我只是继续重新启动我的机器,从那时起它就是即时的。所以我猜我还没有发现悬挂的东西,但重新启动解决了这个问题。我知道你不应该重新启动,但是直到我能找到它正好悬挂的地方,这就是现在的伎俩。