php-fpm 的重启方法(php7.3)
php-fpm 为什么不能用 service 重启?
对于 centos 下使用 yum,或者 ubuntu 下使用 apt-get 等软件包管理工具安装的 php 来说,php-fpm 可以以服务的形式运行,直接用 service php-fpm start|stop|reload
指令即可操作控制。
对于源码包编译安装的,php 5.3.3 以后的 php-fpm 不再支持 php-fpm 以前具有的 /your/phpsrcdir/sbin/php-fpm(start|stop|reload)
等命令,此时需要使用信号控制。
php 5.3.3 后的 php-fpm 版本为什么不支持 service 指令?
php-fpm 一开始是作为 php 的扩展独立存在的,通过 yum 等工具安装,以服务形式运行。在 php 5.3.3 之后,php-fpm 直接被嵌入到 php 中,作为 php 源码的一部分。编译安装不会直接将 php-fpm 注册成服务,可以通过 php-fpm
启动进程。
重启 php-fpm 进程
跟 Apache 和 Nginx 一样,在 Linux 环境中 php-fpm 也是采用多进程方式运行,主进程叫 master process,子进程叫 worker process。要重启 php-fpm 可以从主进程入手。
master 进程可以理解以下信号
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有 worker 进程并重新载入配置和二进制模块
一个简单直接的重启方法:
先查看 php-fpm 的 master 进程号:
# ps aux|grep php-fpm root 21891 0.0 0.0 112660 960 pts/3 R+ 16:18 0:00 grep --color=auto php-fpm root 42891 0.0 0.1 182796 1220 ? Ss 4月18 0:19 php-fpm: master process (/Data/apps/php7/etc/php-fpm.conf) nobody 42892 0.0 0.6 183000 6516 ? S 4月18 0:07 php-fpm: pool www nobody 42893 0.0 0.6 183000 6508 ? S 4月18 0:17 php-fpm: pool www
[notice]上面 worker 进程的执行者为 nobody,是由 php-fpm 配置文件决定的,配置项一般在同级目录下 php-fpm.d\www.conf
文件中。[/notice]
重启php-fpm:
kill -USR2 42891
其他方法:
当然也可以用老办法 kill -9 进程号
分别关闭 master 和其他子进程,或者粗暴一点 pkill php-fpm
关闭所有 php-fpm 相关的进程,然后 /your/phpsrcdir/sbin/php-fpm
启动。
如果不知道 php-fpm 安装目录,可以使用 find / -name php-fpm
查找。若安装目录已添加到 path 中,可以直接 php-fpm
启动。
执行启动指令后,可以用 ps -ef | grep php-fpm
指令查看所属进程是否正常。
参考:我是技术渣 - CSDN
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。