一、前言
php 5.3.3 以后的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,所以不要再看这种古老的命令了,需要使用信号控制
二、启动php-fpm
/usr/local/php/sbin/php-fpm
三、信号控制
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 (/usr/local/php/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
-
重启
kill -USR2 42891
五、通过fpm.pid来操作
上面的方式是php直接通过加载配置文件去运行,没有产生pid文件,可以开启使用pid,那么后面就不需要每次重启时都去 ps 查看PHP-fpm 进程号,可以直接通过php.fpm.pid 去查看
cat /usr/local/php/etc/php-fpm.conf
[global]
; Pid file
; Note: the default prefix is /usr/local/php/var
; Default Value: none
;pid = run/php-fpm.pid
将pid前面的 ; 去掉,开启pid 下次重启的时候便能通过cat pid 来获取php-fpm 的master进程号
#php-fpm 关闭:
kill -INT 'cat /usr/local/php/var/run/php-fpm.pid'
#php-fpm 重启:
kill -USR2 'cat /usr/local/php/var/run/php-fpm.pid'