我正在使用默认设置的 PHP-FPM。我的服务器运行的是最新的 Arch Linux。
我发出命令 sudo systemctl restart php-fpm
需要五分钟才能重新启动并返回到提示符。
这个问题有已知的解决方案吗?
最佳答案
这是由 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 似乎仍然需要很长时间才能启动/停止/重新启动。所以我只是继续并重新启动我的机器,从那时起它是即时的。所以我猜我还没有找到挂起的东西,但重新启动解决了这个问题。我知道您不必重新启动,但在我找到它的确切挂起位置之前,这暂时可以解决问题。
https://stackoverflow.com/questions/18992189/