为什么我们真的需要Apache + PHP如果PHP可以作为Web服务器运行?

几个月前,我做了一个有点出色的实验,今天我们有一个使用以下技术的Intranet门户:

JeasyUI

phpgrid

Kibana

那么,基于我们的testing,为什么我们需要使用apache?

PS:我不是无效的Apache,这个问题只是为了好奇

:编辑

当我的意思是“我们”,我的意思是“我们”作为使用小型networking应用程序的小团队

正如已经有人提到的那样,内置于PHP命令行界面的服务器是一个仅限于开发的服务器,并不是全function的。 它的存在使我们可以内部testing需要Web服务器的东西,主要是; 这对于内部开发人员非常有用。 PHP程序员在开发过程中进行testing是非常有用的,但它并不适用于任何types的部署。

我们提供PHP的最好方法是使用FCGI; php-fpm SAPI允许PHP将一系列进程假脱机,并将这些进程与用于静态内容的服务器的基础结构隔离。

用于静态内容的服务器最好应该是事件驱动的,比如nginx。 原因是大多数请求不需要解释器上下文,响应(图像,CSS,JavaScript等)可以使用非阻塞I / O服务,而无需初始化解释器上下文。

其他有关PHP的能力的答案中有很多废话。 无视它,这是无稽之谈。

PHP的内部networking服务器旨在开发。 当你发布你的应用程序,你需要使用一个“真正的”networking服务器来处理它。

Apache在很多方面都比较好:并发用户,资源优化等。即使对于一个小型网站来说,它的configuration可能性也远不及PHP webserver。 Apache主要是为了提供静态文件; 所以你的风格,图像,JavaScript(如你使用jQuery,你有一些)将得到更好的处理。

Apache是​​快速和非常好的可configuration。 对于静态文件服务,php将是次优的。

还有一个与PHP的大问题,那就是它没有一个工作的multithreading垃圾收集器 。 即使在multithreading环境下也无法工作。 这是原因,为什么apache需要在一些(可configuration的)查询后重新启动具有phpfunction的subprocess。

我还必须提到,即使是在大多数情况下,Java在他的应用程序服务器(即基于Java的web服务器)之前,至less使用apache作为代理,甚至作为静态文件服务器。

所以,我的估计是,即使这些PHPnetworking服务器可以工作,也可能是更好的标准的Apache解决scheme,PHP的几个地面问题将不会得到解决。

两者都是不好的,与Apache或与基于PHP的networking服务器,PHP在这两种情况下是坏的。 问题不在于,问题在于php核心。