php-fpm详解及重启方法

php-fpm是PHP内置的一种FastCGI并提供进程管理功能,php-fpm包含master进程和worker进程,master进程只有一个并负责监听端口,而worker进程有多个,重启php-fpm可以通过kill master进程来实现,码笔记分享php-fpm介绍及重启php-fpm的方法:

php-fpm详解

php-fpm即FastCGI Process Manager:FastCGI进程管理器,它是PHP内置的一种FastCGI,提供进程管理功能。

php-fpm包括master和worker两种进程,master负责监听端口,接收来自Web Server的请求,master进程只有一个,而worker进程可以有多个,每个进程内部都嵌入了一个PHP解释器,是PHP代码真正执行的地方。

php-fpm重启的方法

php-fpm如何开启、停止和重启?在PHP5.3.3版本之前,可以通过/usr/local/php/sbin/php-fpm (start|stop|reload)类似命令打开、停止和重启php-fpm。

PHP新版本后,php-fpm开启、停止和重启的命令不可以用了。码笔记之前说了,php-fpm只有一个master进程,使用控制信号并kill这个master进程即可,可以使用下面的方法来重启php-fpm

  • 1. 查看php-fpm的master进程号
  • 执行命令:ps aux|grep php-fpm
    查询到当前php-fpm的master进程号,示例:

    [root@mabiji ~]# ps aux|grep php-fpm
    root      1264  0.0  0.3 217684  4044 ?        Ss   06:11   0:00 php-fpm: master process (/www/server/php/70/etc/php-fpm.conf)
    www       1271  0.2  3.7 251084 38500 ?        S    06:11   0:56 php-fpm: pool www
    www       1272  0.2  3.5 249852 35904 ?        S    06:11   0:56 php-fpm: pool www
    www       1273  0.2  3.8 251952 39444 ?        S    06:11   0:57 php-fpm: pool www
    www       1274  0.2  3.6 250720 36832 ?        S    06:11   0:54 php-fpm: pool www
    www       2988  0.2  2.8 243560 29356 ?        S    06:11   0:56 php-fpm: pool www
    www       4648  0.2  3.8 251136 38704 ?        S    06:23   0:53 php-fpm: pool www
    www      14333  0.1  3.6 250712 36808 ?        S    07:36   0:38 php-fpm: pool www
    www      15741  0.1  3.4 248608 34788 ?        S    07:46   0:35 php-fpm: pool www
    www      15746  0.1  3.8 253088 39628 ?        S    07:46   0:36 php-fpm: pool www
    www      15747  0.1  3.4 249792 34896 ?        S    07:46   0:37 php-fpm: pool www
    root     28139  0.0  0.0 112724   980 pts/0    R+   13:06   0:00 grep --color=auto php-fpm

    执行命令后,查询到php-fpm的master进程pid为:1264。

  • 2. 执行kill重启php-fpm
  • 查看到php-fpm的master进程号后,使用信号控制重启php-fpm:

    INT,TERM:立刻终止
    QUIT:平滑终止
    USR1:重新打开日志文件
    USR2:平滑重载所有worker进程并重新载入配置和二进制模块

    根据信号控制重启php-fpm执行命令:kill -USR2 1264,即可重启php-fpm。

    php-fpm请求步骤

    访客访问网站之php-fpm请求步骤,以Nginx Web服务器为例:

  • 浏览器访问www.mabiji.com
  • 通过http协议传输--http server(服务器Nginx/Apache)
  • 路由到www.mabiji.com/index.php
  • 加载nginx的fast-cgi模块
  • fast-cgi监听127.0.0.1:9000地址,通过 fast-cgi 协议将请求转发给 php-fpm 处理
  • 请求到达 127.0.0.1:9000
  • php-fpm 监听 127.0.0.1:9000(可以通过 php-fpm.conf 进行修改)
  • 以上为php-fpm介绍及php-fpm重启的方法。