假设我们有一个典型的 LAMP 设置。当有人请求用 php 编码的网页时,Apache 级别会发生什么?Apache 是否会创建一个新的 php 实例来创建并返回该网页?还是有一个持续运行的 php 实例?
基本上,我认为它的工作原理如下:
Apache 收到请求,启动 php 实例来创建页面
页面创建完毕,发送回请求浏览器
PHP 实例已关闭
因此,只有一个 php 实例处理页面请求...我的想法正确吗?
答案1
这取决于您如何使用 PHP。如果您没有使用 CGI/FastCGI(这将使您的陈述正确),那么 PHP 实际上是在模块中运行的(请参阅 /etc/httpd/conf.d/php.conf 或 httpd.conf 以了解包含 php 模块)。这意味着当 Apache 有一个子进程时,每个进程已经有一个 PHP 二进制文件。因此,Apache 针对一组钩子运行解释器并呈现页面。
CGI 是作为单一进程执行的方法。