Apache 2.x已经发布很长时间了,很多情况下都推荐使用2.x,而不是1.3.x。
可是在PHP官方的Manual中,却明确指出:
警告 |
在企业级应用中无论是 Unix 还是 Windows 都不要使用 Apache 2.0 和 PHP 的组合。 |
这是为什么?
这个讨论可以解释一些问题 http://simon.incutio.com/archive/2004/03/31/phpAndApache2
大体说来,Apache 2可以编译成multi-threading模式,而PHP的一些东东不是thread-safe的,所以不推荐在multi-threading模式下的Apache使用。换句话说,如果把Apache2编译成为multi-processes 模式,PHP应该是可以正常工作的。至于multi-processes下的Apache2工作效率和1.3.x相比到底如何,我想应该不会太差吧。
在PHP的Manual里专门提到:
假如您要编译一个多线程版本的 Apache 2.0,您必须覆盖标准的 MPM-Module prefork,或者 worker 或者 perchild。要这样,您需要......使用 --with-mpm=worker 或者 --with-mpm=perchild 选项。之前您需要了解您正在做什么。更多信息请参考 Apache 文档中关于 MPM-Modules 的部分。
注: 要编译多线程版本的 Apache,您的系统必须支持多线程。这也意味着需要将 PHP 编译为正处在试验阶段的 Zend Thread Safety (ZTS)。因此并不是所有的扩展都可以使用了。推荐编译 Apache 使用标准的 prefork MPM-Module。
嗯,回头可以去看看ZTS。还有,不知道PHP5怎么样。