PHP-fpm的启动,直接执行php-fpm的绝对路径即可。建议打开php配置文件中的pid文件(以方便获取进程id值)。如果把php-fpm写入了服务,也可以使用service php-fpm start或/etc/init.d/php-fpm start来启动。另外php-fpm也可以使用信号控制:php-fpm的master主进程可以理解以下信号:
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块
测试如下:
[root@kermit ~]# service php-fpm restartGracefully shutting down php-fpm . doneStarting php-fpm done[root@kermit ~]# php -vPHP 5.3.28 (cli) (built: Jul 21 2016 17:44:48) Copyright (c) 1997-2013 The PHP GroupZend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies[root@kermit ~]# ps -ef |grep "php-fpm: master process" | grep -v 'grep' root 18541 1 0 09:35 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) [root@kermit ~]# kill -USR2 18541[root@kermit ~]# ps -ef |grep "php-fpm: master process" | grep -v 'grep' root 18610 1 0 09:36 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) [root@kermit ~]# service php-fpm statusUsage: /etc/init.d/php-fpm {start|stop|force-quit|restart|reload}[root@kermit ~]#
我的php版本是5.3.28。使用命令:kill -USR2 18541 平滑重启了php-fpm进程,并生成了新的进程ID。如果打开了pid文件,则可以直接使用cat获取pid文件中的进程ID值,如我下面的php-fpm配置:
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice
这样就可以直接使用以下命令来操作:
[root@kermit ~]# cat /usr/local/php/var/run/php-fpm.pid18610[root@kermit ~]# kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`[root@kermit ~]# ps -ef |grep "php-fpm: master process" | grep -v 'grep'root 18801 1 0 09:47 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) [root@kermit ~]#
注:php5.3.3以后源码中已经内嵌了php-fpm,不用再打php-fpm补丁,只需要在configure的时候添加编译参数 –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-libevent-dir=libevent位置。
但是,php5.3.3以后的php-fpm不再支持php-fpm以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令。