深入分解 Web 处事器与 PHP 应用的通讯机制 - 把握 CGI 和 FastCGI 协议的运行道理
Web 处事器和 FastCGI 交互进程
为什么必要在动静头发送 RequestID 这个标识? 假如是每个毗连仅处理赏罚一个哀求,发送 RequestID 则略显多余。 可是我们的 Web 处事器和 FastCGI 历程之间的毗连也许处理赏罚多个哀求,即一个毗连可以处理赏罚多个哀求。以是才必要回收数据包协议而不是直接行使单个数据流的缘故起因:以实现「多路复用」。 因此,因为每个数据包都包括独一的 RequestID,以是 Web 处事器才气在一个毗连上发送恣意数目的哀求,而且 FastCGI 历程也可以或许从一个毗连上吸取到恣意数目的哀求数据包。 其它我们还必要明晰一点就是 Web 处事器 与 FastCGI 历程间通讯是 无序的。纵然我们在交互进程中看起来一个哀求是有序的,可是我们的 Web 处事器也有也许在统一时刻发出几十个 BEGIN_REQUEST 范例的数据包,以此类推。 PHP-FPM 着实讲授完 CGI 和 FastCGI 协议,根基上我们就已经研究完 「Web 处事器与 PHP 应用之间的通讯机制」这个题目了。可是对付我们 PHP 软件工程师来讲,也许还会碰着「什么是 PHP-FPM」及其相干题目。这里我们一并来轻微讲授一下。 PHP-FPM 是 FastCGI 历程打点器(PHP FastCGI Process Manager)(http://php.net/manual/zh/install.fpm.php),用于替代 PHP 内核的 FastCGI 的大部门附加成果(可能说一种更换的 PHP FastCGI 实现),对付高负载网站长短常有效的。 下面是官网中获取到的它所支持的特征:
那么 PHP-FPM 是怎样事变的呢? PHP-FPM 历程打点器有两种历程构成,一个 Master 历程和多个 Worker 历程。Master 历程认真监听端口,吸取来自 Web 处事器的哀求,然后指派详细的 Worker 历程处理赏罚哀求;worker 历程则一样平常有多个 (依据设置抉择历程数),每个历程内部都嵌入了一个 PHP 表明器,用来执行 PHP 代码。 Nginx 处事器怎样与 FastCGI 协同事变 Nginx 处事器无法直接与 FastCGI 处事器举办通讯,必要启用 ngx_http_fastcgi_module 模块举办署理设置,才气将哀求发送给 FastCGI 处事。 个中,包罗我们熟知的设置指令:
你可以到 PHP FastCGI 实例教程 (https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/)进修一些根基行使。 总结 到这里我们根基就进修完 CGI、FastCGI、PHP-FPM以及 Nginx 处事器与 FastCGI 处事通讯道理。一句话: CGI 和 FastCGI 是一种协媾和 HTTP 协议一样位于应用层,与说话无关;PHP-FPM 是一种 FastCGI 协议的实现,可以或许打点 FastCGI 历程。 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |