PHP与NGINX是怎么协作的

版权声明:经验之谈,不知能否换包辣条,另,转载请注明出处。 https://blog.csdn.net/zhezhebie/article/details/89578446

PHP与NGINX是怎么协作的?
  最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不断发展,网站也越来越复杂,所以出现动态技术,但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要做个约定,就是我把请求参数发送给你,然后我接收你的处理结果返回给客户端。这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,不是什么语言。下面图可以看到流程:
  在这里插入图片描述

1.CGI是什么?

CGI是一个协议,Common Gateway Interface - 即通用网关接口,是web服务器和外部应用程序(cgi程序,例如php-cgi)之间的接口标准,只要实现了这种协议,就能使得前后端进行通信.CGI工作原理:每当客户请求CGI(览器通过HTML表单或超链接请求指向一个CGI应用程序的URL)的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如php-cgi.exe),CGI 的一个进程则处理完一个请求后退出,下一个请求来时再创建新进程。当然,这样在访问量很少没有并发的情况也行,可是当访问量增大,并发存在,这种方式就不适合了,于是就有了fastcgi。

2.FastCGI是什么?

FastCGI 就是一个常驻型(long-live)的cgi.它的主要行为是将cgi解释器进程保存在内存中,避免了重复的初始化操作,以获得较高的性能.

3.php-fpm是什么?

php-fpm即php-Fastcgi Process Manager. php-fpm是 FastCGI 的实现,并提供了进程管理的功能。进程包含 master 进程和 worker 进程两种进程。master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。

猜你喜欢

转载自blog.csdn.net/zhezhebie/article/details/89578446