这是 apache 中的开销,对于 nginx 来说它也存在吗?
答案1
Apache 不会“调用”PHP,但是,php 解释器一旦加载到内存中,就会一直停留在内存中,直到进程退出(这样就不必再次加载)。
Nginx 从来不做任何与 PHP 相关的事情。相反,它可以选择性地调用 PHP CGI 或 FastCGI 来处理 PHP 页面。但是,这是由一个单独的进程处理的——就像 Apache 和 MySQL 通过单独的进程处理一样,尽管它们可以相互传递信息。
答案2
Apache 并不真正调用 PHP 来获取图像资源。当请求 PHP 文件时,带有 mod_php 的 Apache 会将 PHP 解释器嵌入到其进程中,然后在将来的请求(例如图像)时重新使用该进程。因此,从某种意义上说,Apache 并没有让 PHP 解析图像,而是让 PHP 解析器在使用内存的进程中。
Nginx 使用 FastCGI 与 PHP 通信,这意味着 Nginx 工作进程不包含 PHP,而是与外部 PHP 进程通信。您需要明确告诉 Nginx 向 PHP 发送什么,因此如果您不告诉 Nginx 将图像文件发送到 PHP,它就不会发送。