php-cgi 调用 zend 虚拟机(ZE)来执行PHP代码。
php-cgi 负责初始化 ZE 的执行环境, ZE 负责解析和执行PHP代码, 然后将结果返回给php-cgi.
不是的 cli是cli 是命令行执行的。nginx接收到的请求通过fastcgi 让php-fpm来执行的 这就是cgi模式。cgi和cli模式不一样的 php7对cgi和cli分的更明白 zend引擎是将php代码编译为可执行的opcode来处理的
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答715 阅读✓ 已解决
2 回答2.3k 阅读
1 回答687 阅读✓ 已解决
首先你要明白,FastCGI,这是一种协议,而 php-cgi 是这个协议的一个实现。Nginx 在收到请求后,会转发给 php-cgi,让它来处理具体的请求。当请求完成后,会将结果返回给 Nginx。而 php-cgi 在进程开始的时候,便会对 ZE 初始化,读取各种配置。当有请求来的时候,会解释执行对应的代码。
具体的过程是这样的,php-cgi 进程启动时,会初始化 ZE,然后 Nginx 在收到请求之后,转发给 php-cgi 进程,它在已经准备好的 ZE 下解释执行具体的代码,最后,代码执行完后,得到的结果返回给 Nginx 响应请求。
现在 php-cgi 大多都不用了,而用的多的是 php-fpm(同样是 FastCGI 的实现)。