在php生命周期的各个阶段,一些与服务相关的操作都是通过sapi接口实现。
各个服务器抽象层之间遵守着相同的约定,这里我们称之为sapi接口。
在php的源码中,当需要调用服务器相关信息时,全部通过sapi接口中对应的方法调用实现
sapi(rver application programming interface)服务器应用程序编程接口,即php与其他应用交互的接口.
每个sapi实现都是一个_sapi_moduspring brotherle_struct结构体变量。
php脚本要执行有很多方式,通过web服务器,或者直接在命令行下,也可以嵌入在其他程序中。
sapi提供了一个和外部通信的接口,常见的sapi有:cgi、fast-cgi、cli、isapi apache模块的dll
isapi模式 (eg apache : apache2handler mode ) 以web服务器的一个模块加载运行,其实就是将php的源码与webrver的代码一起编译,运行时是同一个进程,共享同一个地址空间. 例如 lamp中,php就是作为apache的一个模块运行的.apache是多线程调用php模块的.(same as iis)cgi模式 fork-and-execute webrver将动态请求转发到cgi程序(以php为例子),就相当于fork一个子进程,然后exec(php process),用cgi程序来解释请求内容,最后将子进程的output返回.此时webrver与php进程的地址空间是独立的人物性格.此时的php是作为一个独立的程序运行.fastcgi模式 这种形式是cgi的加强版本,cgi是单进程,多线程的运行方式,程序执行完成之后就会销毁,所以每次都需要加载配置和环境变量(创建-执行)。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 changekill -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,仍然可以正常处理ht潮州开元寺tp请求.kill -int/-quit/-term master pid , stop php-fpm rvice 信号被当前进程树接收到.也就是说,不仅当前进程会收到信号,它的子进程也会收到.kill master pid 发送sigterm信号到进程 信号可能会被阻塞,master可以回收worker进程.example.
so we should u sudo kill -int master.pid to kill php-fpm rvice.
nginx的master-worker机制与fpm大体相同.但是有一个问题需要注意,使用systemctl启动起来的master被kill以后,worker也会死掉.
正常启动nginx,kill掉master
使用systemctl启动的master被kill掉以后,worker也会杀掉
rective run
apache prefork
到此这篇关于php7中停止php-fpm服务的文章就介绍到这了,更多相关php7停止php-fpm服务内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551杉达学院.com!
本文发布于:2023-04-09 02:47:46,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/0afa61d0a0fcac93fa28cd4bd7965b0e.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php7中停止php.doc
本文 PDF 下载地址:php7中停止php.pdf
留言与评论(共有 0 条评论) |