PHP-FPM 重启操作详解:从旧命令到新姿势
从 PHP 5.3.3 开始,PHP-FPM 的管理方式悄悄发生了变化。以前大家习惯用的 /usr/local/php/sbin/php-fpm (start|stop|reload) 这套命令,在后续版本中已经不再支持了。很多人在升级到 PHP 7 之后,发现原先的管理脚本失灵,一下子不知道该怎么处理。这里整理两种最常用的方法,以 PHP 7 环境为例,供大家参考。
第一种方法:直接通过信号操作
最直接的办法,就是找到 master 进程,然后给它发送信号。先跑一下这个命令,找到 PHP-FPM 的进程信息:
ps -aux|grep php-fpm找到 master 进程的 PID(通常在第一行,进程名带 master process 标识),然后执行:
kill -USR2 42890这里 42890 是示例 PID,实际替换成你查到的数字。执行完,PHP-FPM 就会平滑重启,worker 进程会被重新加载,配置也会生效。简单来说,就是“OK 了”。
master 进程能识别的信号主要有这几个:
- INT, TERM:立刻终止,相当于强制关闭。
- QUIT:平滑终止,等当前请求处理完再退出。
- USR1:重新打开日志文件,适合日志切割场景。
- USR2:平滑重载所有 worker 进程,并重新载入配置和二进制模块——这就是我们平时重启用的信号。
第二种方法:通过 PID 文件管理
如果觉得每次查 PID 太麻烦,可以启用 PHP-FPM 的 PID 文件功能。首先确认 master 进程使用的配置文件路径,通常默认是 /usr/local/php/etc/php-fpm.conf(PHP 7 可能对应 /usr/local/php7/etc/php-fpm.conf)。打开这个配置文件,找到下面这行:
;pid = run/php-fpm.pid把前面的分号去掉,改为:
pid = run/php-fpm.pid保存后,先执行一次 kill -USR2 让配置生效(或者重新启动 PHP-FPM)。之后,PHP-FPM 就会在 /usr/local/php7/var/run/ 目录下生成 php-fpm.pid 文件,里面记录着 master 进程的 PID。
有了这个文件,后续管理就方便多了:
- 关闭 PHP-FPM:
kill -INT 'cat /usr/local/php7/var/run/php-fpm.pid' - 重启 PHP-FPM:
kill -USR2 'cat /usr/local/php7/var/run/php-fpm.pid'
注意,这里用反引号或者 $() 把 cat 命令括起来,就能动态读取 PID 文件中的进程号,不用每次都手动输入。两种方法各有利弊:第一种适合临时操作,第二种适合集成到脚本或日常管理中。从实际使用来看,推荐第二种——毕竟,配置一次,以后省心。