php集成php fpm后是否还分fastCGI和CGI运行模式?

发布于 2022-09-01 21:09:57 字数 103 浏览 11 评论 0

关于php异步执行,看到laruence的一篇文章介绍fastcgi_finish_request()这个函数,但是现在php已经集成phpfpm,是否还要求必须FastCGI模式下运行PHP

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

牵强ㄟ 2022-09-08 21:09:57

fastcgi_finish_request是PHP-FPM下提供的一个函数.可以冲刷(flush)所有响应的数据给客户端并结束请求.
这使得客户端结束连接后,能够继续执行不需要输出给用户的代码,但仍会阻塞当前PHP-FPM工作进程.

附:PHP FastCGI进程管理器PHP-FPM的架构
一个master进程,支持多个pool,每个pool由master监听不同的端口,pool中有多个worker进程.
每个worker进程都内置PHP解释器,并且进程常驻后台,支持prefork动态增加.
每个worker进程支持配置响应指定请求数后自动重启,master进程会重启挂掉的进程.
每个worker进程能保持一个到MySQL/Memcached/Redis的持久连接,
实现"连接池",避免重复建立连接,对程序透明.
master进程采用epoll模型异步接收和分发请求,listen监听端口,epoll_wait等待连接,
然后分发给对应pool里的worker进程,worker进程accpet请求后poll处理连接,
如果worker进程不够用,master进程会prefork更多进程,
如果prefork达到了pm.max_children上限,worker进程又全都繁忙,
这时master进程会把请求挂起到连接队列backlog里(默认值是511).

俯瞰星空 2022-09-08 21:09:57

大神来了。
fpm是管理fastcgi的。 所以你如果用fpm的方式的话,本身就是fastcgi模式了。

浸婚纱 2022-09-08 21:09:57

phpfpm管理下的PHP就是FastCGI模式

心凉 2022-09-08 21:09:57

现在都是fastcgi了吧

养猫人 2022-09-08 21:09:57

cgi和fastcgi在目前的php中同时存在
你仍然可以通过php-cgi访问到原始的cgi模式,当然在php-cgi中,fastcgi_finish_request这个函数也不再存在,它仅在php-fpm运行的php中才有效

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文