php的运行原理,浅析web server和PHP的通信

PHP运行原理

外部请求来到web server(nginx/apache/IIS),web服务器判断请求是静态页面是PHP请求,如果是静态页面,直接根据路径拿到html文件,返回给前端;如果是PHP请求,就需要把这个请求交给PHP处理。问题来了,web server 如何把这个请求交给php呢?我们需要定义一种通信协议,是的两者之间可以通信。这个通信协议就是CGI。

CGI

定义:公共网管。是web server与编程语言(php,python等)的通信协议。
缺点:一个CGI进程只能处理一个请求,当请求过多时,会消耗巨大的资源和内存。

PHP-CGI

定义:是PHP自带的web server与php的通信协议。有着和CGI同样的缺点。

Fast-CGI

定义:可以理解为一个cgi的进程管理器。
特点:常驻内存,支持分布式运算。
工作原理:Fast-CGI启动,自身初始化,并同时启动多个cgi子进程。当请求到达web server时,web server将cgi的环境配置和标准输入给Fast-CGI的子进程(这样的机制就表明Fast-CGI可以平滑启动,无需重启服务),当请求处理完成后,子进程告知Fast-CGI,自身进入等待状态,等待主进程的下一次调遣。
缺点:相对于多线程的CGI,会消耗更大的服务器内存。

PHP-FPM

定义:是PHP自带的Fast-cgi进程管理器,拥有Fast-cgi的一切特点和缺点,只能处理php请求而已。

猜你喜欢

转载自blog.csdn.net/jeremy_ke/article/details/84872040