• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php7中停止php-fpm服务的方法详解

    在PHP生命周期的各个阶段,一些与服务相关的操作都是通过SAPI接口实现。

    各个服务器抽象层之间遵守着相同的约定,这里我们称之为SAPI接口。

    在PHP的源码中,当需要调用服务器相关信息时,全部通过SAPI接口中对应的方法调用实现

    php-fpm + nginx
    php + terminal
    ... 
    

    PHP常见的四种运行模式

    SAPI(Server Application Programming Interface)服务器应用程序编程接口,即PHP与其他应用交互的接口.
    每个SAPI实现都是一个_sapi_module_struct结构体变量。

    PHP脚本要执行有很多方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中。

    SAPI提供了一个和外部通信的接口,常见的SAPI有:cgi、fast-cgi、cli、isapi apache模块的DLL

    1. ISAPI模式 (eg Apache : apache2handler mode ) 以web服务器的一个模块加载运行,其实就是将PHP的源码与webServer的代码一起编译,运行时是同一个进程,共享同一个地址空间. 例如 LAMP中,PHP就是作为Apache的一个模块运行的.Apache是多线程调用php模块的.(same as IIS)
    2. CGI模式 fork-and-execute webServer将动态请求转发到CGI程序(以php为例子),就相当于fork一个子进程,然后exec(php process),用CGI程序来解释请求内容,最后将子进程的output返回.此时webServer与php进程的地址空间是独立的.此时的php是作为一个独立的程序运行.
    3. FastCGI模式 这种形式是CGI的加强版本,CGI是单进程,多线程的运行方式,程序执行完成之后就会销毁,所以每次都需要加载配置和环境变量(创建-执行)。
      而FastCGI则不同,FastCGI 是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次。
    4. CLI command line interface

    CLI

    php_module_startup
    php_request_startup
    php_execute_script
    php_request_shutdown
    php_module_shutdown
    

    PHP-FPM

    php 5.3.3 以后的php-fpm不再支持php-fpm (start|stop|reload)等命令,需要使用信号控制.php-fpm master进程可以理解以下信号

    example.

    [sujianhui@dev529 ~]$>ps aux | grep php-fpm
    root     17000  0.0  0.0 243220  7208 ?        Ss   17:00   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
    sujianh+ 17001  0.0  0.0 245304  7072 ?        S    17:00   0:00 php-fpm: pool www
    sujianh+ 17002  0.0  0.0 245304  7072 ?        S    17:00   0:00 php-fpm: pool www
    sujianh+ 17069  0.0  0.0 112816   976 pts/3    S+   17:01   0:00 grep --color=auto php-fpm
    
    [sujianhui@dev529 ~]$>sudo kill -USR1 17000
    [sujianhui@dev529 ~]$>ps aux | grep php-fpm
    root     17000  0.0  0.0 243220  7208 ?        Ss   17:00   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
    sujianh+ 17001  0.0  0.0 245304  7072 ?        S    17:00   0:00 php-fpm: pool www
    sujianh+ 17002  0.0  0.0 245304  7072 ?        S    17:00   0:00 php-fpm: pool www
    sujianh+ 17105  0.0  0.0 112816   972 pts/3    S+   17:01   0:00 grep --color=auto php-fpm
    
    
    [sujianhui@dev529 ~]$>sudo kill -USR2 17000
    [sujianhui@dev529 ~]$>ps aux | grep php-fpm
    root     17122  0.0  0.0 243220  7212 ?        Ss   17:01   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
    sujianh+ 17123  0.0  0.0 245304  7072 ?        S    17:01   0:00 php-fpm: pool www
    sujianh+ 17124  0.0  0.0 245304  7072 ?        S    17:01   0:00 php-fpm: pool www
    sujianh+ 17126  0.0  0.0 112816   976 pts/3    S+   17:01   0:00 grep --color=auto php-fpm
    
    [sujianhui@dev529 ~]$>pstree 17122 -a
    php-fpm
      ├─php-fpm          
      └─php-fpm          
    [sujianhui@dev529 ~]$>sudo kill -INT 17122
    [sujianhui@dev529 ~]$>ps aux | grep php-fpm
    sujianh+ 17229  0.0  0.0 112816   976 pts/3    S+   17:03   0:00 grep --color=auto php-fpm
    

    so we should use sudo kill -INT master.pid to kill php-fpm service.

    nginx的master-worker机制与fpm大体相同.但是有一个问题需要注意,使用systemctl启动起来的master被kill以后,worker也会死掉.

    正常启动nginx,kill掉master

    [sujianhui@dev0529 sbin]$>which nginx
    /usr/sbin/nginx
    [sujianhui@dev0529 sbin]$>sudo nginx 
    [sujianhui@dev0529 sbin]$>ps aux | grep nginx
    root      4562  0.0  0.0  46608  1084 ?        Ss   21:46   0:00 nginx: master process nginx
    sujianh+  4563  0.0  0.0  49128  2088 ?        S    21:46   0:00 nginx: worker process
    sujianh+  4578  0.0  0.0 112812   972 pts/0    S+   21:46   0:00 grep --color=auto nginx
    
    [sujianhui@dev0529 sbin]$>sudo kill -9 4562
    [sujianhui@dev0529 sbin]$>ps aux | grep nginx
    sujianh+  4563  0.0  0.0  49128  2088 ?        S    21:46   0:00 nginx: worker process
    sujianh+  4612  0.0  0.0 112812   972 pts/0    S+   21:46   0:00 grep --color=auto nginx
    [sujianhui@dev0529 sbin]$>kill -9 4563
    [sujianhui@dev0529 sbin]$>ps aux | grep nginx
    sujianh+  4638  0.0  0.0 112812   972 pts/0    S+   21:47   0:00 grep --color=auto nginx
    

    使用systemctl启动的master被kill掉以后,worker也会杀掉

    [sujianhui@dev0529 sbin]$>systemctl start nginx
    [sujianhui@dev0529 sbin]$>ps aux | grep nginx
    root      4678  0.0  0.0  46608  1072 ?        Ss   21:47   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
    sujianh+  4679  0.0  0.0  49124  2080 ?        S    21:47   0:00 nginx: worker process
    sujianh+  4702  0.0  0.0 112812   972 pts/0    S+   21:47   0:00 grep --color=auto nginx
    [sujianhui@dev0529 sbin]$>sudo kill -9 4678
    [sujianhui@dev0529 sbin]$>ps aux | grep nginx
    sujianh+  4732  0.0  0.0 112812   972 pts/0    S+   21:47   0:00 grep --color=auto nginx
    

    rective run

    [sujianhui@dev529 ~]$>kill -l
     1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
     6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
    11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
    16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
    21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
    26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
    31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
    38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
    43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
    48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
    53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
    58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
    63) SIGRTMAX-1	64) SIGRTMAX	
    
    [sujianhui@dev529 ~]$>sudo nginx 
    [sudo] password for sujianhui: 
    [sujianhui@dev529 ~]$>ps aux | grep nginx
    root      3628  0.0  0.0  46600  1052 ?        Ss   09:49   0:00 nginx: master process nginx
    sujianh+  3629  0.0  0.0  49096  2056 ?        S    09:49   0:00 nginx: worker process
    sujianh+  3637  0.0  0.0 112812   972 pts/0    S+   09:49   0:00 grep --color=auto nginx
    
    [sujianhui@dev529 ~]$>sudo kill -SIGTERM 3628
    [sujianhui@dev529 ~]$>ps aux | grep nginx
    sujianh+  3744  0.0  0.0 112812   972 pts/0    S+   09:50   0:00 grep --color=auto nginx
    
    [sujianhui@dev529 ~]$>sudo nginx 
    [sujianhui@dev529 ~]$>ps aux | grep nginx
    root      3766  0.0  0.0  46600  1052 ?        Ss   09:51   0:00 nginx: master process nginx
    sujianh+  3767  0.0  0.0  49096  2056 ?        S    09:51   0:00 nginx: worker process
    sujianh+  3775  0.0  0.0 112812   972 pts/0    S+   09:51   0:00 grep --color=auto nginx
    [sujianhui@dev529 ~]$>sudo kill -9 3766
    [sujianhui@dev529 ~]$>ps aux | grep nginx
    sujianh+  3767  0.0  0.0  49096  2056 ?        S    09:51   0:00 nginx: worker process
    sujianh+  3799  0.0  0.0 112812   972 pts/0    S+   09:51   0:00 grep --color=auto nginx
    

    apache prefork

    总结

    到此这篇关于php7中停止php-fpm服务的文章就介绍到这了,更多相关php7停止php-fpm服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • PHP与以太坊交互详解
    • php实现单笔转账到支付宝功能
    • php实现微信企业转账功能
    • 微信企业转账之入口类分装php代码
    • php实现微信公众号企业转账功能
    • PHP 对接美团大众点评团购券(门票)的开发步骤
    • PHP小程序后台部署运行 LNMP+WNMP的方法
    • 为PHP模块添加SQL SERVER2012数据库的步骤详解
    • php微信小程序解包过程实例详解
    • 利用ajax+php实现商品价格计算
    • PHP实现创建以太坊钱包转账等功能
    上一篇:PHP 对接美团大众点评团购券(门票)的开发步骤
    下一篇:php bcdiv和bcmul 函数的怪异现象
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php7中停止php-fpm服务的方法详解 php7,中,停止,php-fpm,服务,