iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php7中停止php-fpm服务的方法详解
  • 575
分享到

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

2024-04-02 19:04:59 575人浏览 八月长安
摘要

在PHP生命周期的各个阶段,一些与服务相关的操作都是通过Sapi接口实现。 各个服务器抽象层之间遵守着相同的约定,这里我们称之为SAPI接口。 在php的源码中,当需要调用服务器相关

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进程可以理解以下信号

  • kill -USR1 "php-fpm master pid" 重新打开日志文件. 执行完毕后 你会发现php-fpm master/worker进程id not change
  • kill -USR2 "php-fpm master pid" 平滑重载所有php-fpm进程,执行完毕后你会发现php-fpm master/worker进程id have changed.
  • kill -KILL/-9 php-fpm-master.pid , 强制杀死master进程,该信号不允许中断/阻塞,此时master进程无法通知回收worker进程,所以此时worker进程仍然监听port,仍然可以正常处理Http请求.
  • kill -INT/-QUIT/-TERM master pid , stop php-fpm service 信号被当前进程树接收到.也就是说,不仅当前进程会收到信号,它的子进程也会收到.
  • kill master pid 发送SIGTERM信号到进程 信号可能会被阻塞,master可以回收worker进程.

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服务内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: php7中停止php-fpm服务的方法详解

本文链接: http://www.lsjlt.com/news/123358.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php7中停止php-fpm服务的方法详解
    在PHP生命周期的各个阶段,一些与服务相关的操作都是通过SAPI接口实现。 各个服务器抽象层之间遵守着相同的约定,这里我们称之为SAPI接口。 在PHP的源码中,当需要调用服务器相关...
    99+
    2024-04-02
  • PHP7中php.ini、php-fpm和www.conf的配置方法
    这篇文章给大家分享的是有关PHP7中php.ini、php-fpm和www.conf的配置方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。因此,这篇文章主要对这三个PHP配置文件的进行简单说明,具体的配置过程见...
    99+
    2023-06-14
  • php cli停止工作的解决方法
    小编给大家分享一下php cli停止工作的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php cli停止工作的解决办法:1、打开php.ini配置文件;...
    99+
    2023-06-25
  • 详解Java停止线程的四种方法
    一、线程停止基础知识 interrupted(): 测试当前线程是否已经中断。该方法为静态方法,调用后会返回boolean值。不过调用之后会改变线程的状态,如果是中断状态...
    99+
    2024-04-02
  • Centos安装PHP7及配置php-fpm开机启动的方法
    本文将为大家详细介绍“Centos安装PHP7及配置php-fpm开机启动的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Centos安装PHP7及配置php-fpm开机启动的方法”能够给你意想不到的收获...
    99+
    2023-06-06
  • SQL SERVER服务停止的处理方法
    当SQL Server服务停止时,可以尝试以下方法来解决问题:1. 检查SQL Server服务是否启动。打开“服务”管理器,找到S...
    99+
    2023-09-05
    SQL SERVER
  • mac中php-fpm报错的解决方法
    小编给大家分享一下mac中php-fpm报错的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mac php-fpm报错的解决办法:1、配置“php-fpm.conf”文件;2、修改“php-fpm.conf err...
    99+
    2023-06-14
  • 解决Linux环境下PHP7-FPM启动失败的方法
    解决Linux环境下PHP7-FPM启动失败的方法 在使用Linux服务器搭建网站或应用程序时,PHP7-FPM是一个常用的PHP FastCGI进程管理器。但是有时会遇到PHP7-F...
    99+
    2024-03-11
    linux php fpm
  • Oracle停止数据泵导入数据的方法详解
    目录前言一、操作二、总结前言 这篇博客所描述的是,停止数据的导入只能时停止后面的数据的导入并不会把已经到入的数据进行回滚和删除。 一、操作 使用数据泵 impdp 开始导入数据后,突...
    99+
    2024-04-02
  • PHP停止进程的四种方法是什么
    这篇文章主要讲解了“PHP停止进程的四种方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP停止进程的四种方法是什么”吧!第一种方法是使用exit()函数这个函数可以让程序立即停止...
    99+
    2023-07-05
  • 详解Android 视频播放时停止后台运行的方法
    详解Android 视频播放时停止后台运行的方法在项目中,遇到了视频播放,可是后台播放的音乐也同时播放,我们要的效果肯定是视频播放的时候,音乐暂停,视频播放完了我们就继续播放音乐,于是就找到了这个方法。 @TargetApi(Build.V...
    99+
    2023-05-31
    android 视频播放 后台运行
  • linux 下MySQL服务器的启动与停止方法
    本篇内容主要讲解“linux 下MySQL服务器的启动与停止方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux 下MySQL服务器的启动与停止方法”吧!一、以非特权用户运行MySQL服...
    99+
    2023-06-10
  • PHP中重启php-fpm的几种方法汇总
    目录PHP重启php-fpm的方法一个简单直接的重启方法Mac下php-fpm重启方式总结PHP重启php-fpm的方法 启动php-fpm: /usr/local/php/sbin...
    99+
    2023-02-16
    PHP重启php-fpm 重启php-fpm方法 PHP重启php-fpm方法
  • MySQL服务正在启动或停止中或服务无法启动【解决方案】
    具体的教程如下: 1. 首先以管理员身份打开命令行窗口,注意是管理员身份,不然无权限访问。 2. 输入命令“tasklist| findstr "mysql"”,用于查找mysql的残留进程。果不其然,确实存在mysql的残留进程,难怪...
    99+
    2023-08-31
    mysql 数据库 Powered by 金山文档
  • springboot启动后和停止前执行方法示例详解
    springboot启动后即执行的方法 1)实现ApplicationRunner接口 @Configuration public class ApplicationService ...
    99+
    2024-04-02
  • 阿里云服务器无法停止的可能原因及解决方法
    简介:本文将探讨阿里云服务器无法停止的原因,并提供一些解决方法,帮助用户解决该问题。 阿里云服务器是目前市场上最受欢迎的云计算服务之一,但是有时候用户可能会遇到服务器无法停止的情况。这种情况可能会导致用户无法及时释放资源,造成不必要的费用浪...
    99+
    2024-01-19
    阿里 解决方法 原因
  • oracle停止job任务的方法是什么
    在Oracle数据库中,停止一个job任务可以通过以下方法实现: 使用DBMS_SCHEDULER包中的STOP_JOB过程来停止...
    99+
    2024-04-09
    oracle
  • Ubuntu中PHP-FPM缺失的应对方法
    在 Ubuntu 系统中,PHP-FPM 是一个常用的 PHP FastCGI 进程管理器,用于处理 PHP 程序的运行。然而,在一些情况下,可能会出现 PHP-FPM 缺失的问题,导...
    99+
    2024-03-09
    php配置 问题解决 fpm安装
  • 亚马逊服务器停止续费的原因及解决方法
    1. 为什么亚马逊服务器停止续费? 亚马逊服务器停止续费可能有多种原因。以下是一些可能的原因: 1.1 账户余额不足 亚马逊服务器使用预付费模式,即需要提前充值账户余额来支付服务器费用。如果账户余额不足,服务器将无法继续使用。 1.2 信...
    99+
    2023-10-27
    亚马逊 解决方法 续费
  • SQL SERVER服务启动后又停止了的完美解决方法
    如果SQL Server服务启动后又停止了,可能有以下几个常见的原因:1. 硬件资源不足:检查服务器的硬件资源(CPU、内存等)是否...
    99+
    2023-09-16
    sqlserver
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作