Apache是​​否将所有请求发送到PHP进行处理?

这篇关于Nginx wiki的文章似乎表明,Apache将所有请求发送到PHP进行处理。

[指nginxconfiguration]在这个例子中,你将所有东西传递给PHP。 为什么? Apache可能会这样做,你不需要。

我已经阅读了其他文章指出这一点,我敢肯定它可以改变configuration,但是例如Apache运行mod-PHP,Apache只是发送所有文件,即CSS,JavaScript,图像文件等到PHP解释器处理?

这不是真的。 你select哪个文件将传递给PHP解释器。 无论您使用的是何种方式,无论是mod_php还是fastcgi,情况都是如此。

Check here for example: http://php.net/manual/en/install.unix.apache2.php <FilesMatch "\.ph(p[2-6]?|tml)$"> SetHandler application/x-httpd-php </FilesMatch> 

这意味着只有匹配该正则expression式的文件(使用php / phpN / phtml扩展名)将被传递给phpparsing器。

默认情况下,Apache不会将所有文件作为PHP脚本处理,所以即使PNG或CSS或其他任何非PHP文件都具有<?phpstring,也不会被解释。 这可以改变。

但是当httpd产生一个处理请求的进程时, mod_phpX被加载到内存中,并且每个请求消耗大量的CPU周期和兆字节的RAM – 无论请求的文件是否是PHP脚本,1字节或100兆字节大。

由于PHP及其模块中仍然存在非线程安全(NTS)代码,因此在使用模块时,Web服务器需要使用经典的基于stream程的prefork MPM。 这是最慢和最消耗内存的MPM。

以上所有内容清楚地说明了为什么FastCGI SAPI可以在繁忙的基于PHP的站点上提供更高的性能。