线程安全和非线程安全的PHP Windows安装包之间的技术差异是什么?

我目前正在为基于Apache / Windows的开发环境安装PHP,但似乎即将陷入第一个障碍:select正确的软件包进行安装。

PHP提供不less于四种风格 :

  • VC9 x86非线程安全
  • VC9 x86线程安全
  • VC6 x86非线程安全
  • VC6 x86线程安全

这些版本在实际意义上有什么区别?

如果这样不够复杂的话,PHP5.3版本只能在VC9中使用(随着VC6软件包提供了5.2版本)。 然而,根据PHP网站,你不应该使用VC9与Apache …那么为什么Apache获得旧版本?

这一切都非常混乱,我想帮助理解select。

Solutions Collecting From Web of "线程安全和非线程安全的PHP Windows安装包之间的技术差异是什么?"

经过大量的研究,我设法找到了自己的答案。

在最基本的形式中,答案是: 你应该安装什么样的PHP版本来关闭你正在运行的web服务器。

下面是根据我所学的知识,在选择PHP版本时使用的术语的更深入的解释:


VC6 vs VC9

首先,用于Windows的不同版本的Apache使用不同的编译器进行编译。 例如, Apache.org上的版本被设计为使用Microsoft Visual C ++ 6 (也称为VC6)进行编译。 这个编译器很受欢迎,但也很老旧。 (它可以追溯到1998年)

Apache为不同的编译器提供了不同的版本。 例如,可从ApacheLounge.com下载的版本被设计为使用流行的和更新的编译器,即2008年的Microsoft Visual C ++ 9进行编译。也被称为VC9

(注意:这两个编译器是两个最受欢迎的选项,所以虽然可能有一个VC7,VC8等编译版本的Apache,但是你不太可能碰到它们。

使用这个更新的编译器(VC9)是很重要的,因为最新版本的PHP只是以VC9的形式发布(尽管老版本仍然可用于VC6)。

最重要的是,根据ApacheLounge的说法,使用VC9编译的Apache版本在性能,内存管理和稳定性等方面有很多改进。

如果这还不够,PHP的开发人员在他们的网站上发表如下声明:

Windows用户:请注意,我们不再提供使用Visual Studio C ++ 6(VC6)创建的构建。 使用这个没有维护的编译器来维护Windows的高质量和安全的PHP是不可能的。

我们推荐由ApacheLounge提供的VC9 Apache构建

所有的PHP用户都应该注意,PHP 5.2系列不再受支持。 强烈建议所有用户升级到PHP 5.3.6。

总而言之,如果你问我,这是一个使用VC9版本的Apache和PHP的非常引人注目的论据。

因此,如果您使用的是官方Apache站点的Apache版本,则将使用VC6进行编译,因此,您应该使用旧版本的PHP编译器。 如果您使用的是使用VC9编译的Apache版本(如ApacheLounge.com上提供的版本) ,则可以使用最新版本的PHP(适用于VC9)。

对于我来说,运行一个本地开发环境,最好是有最新版本的PHP,所以需要一个VC9版本的Apache,所以我可以使用VC9版本的PHP。

线程安全与非线程安全

再次,这涉及到您的网络服务器。 默认情况下,Apache作为模块安装在Windows上,但可以更改为以FastCGI的形式运行。 两者之间有很多不同之处,但基本上FastCGI更现代,更快,更强劲,而且更耗资源。 对于一个运行本地开发环境的人来说,FastCGI可能会有些过火,但是显然很多托管公司都是以FastCGI的名义运行的,所以在开发环境中有很好的理由。

如果您将Apache(或IIS)作为FastCGI(或CGI)运行,那么您需要PHP的非线程安全版本。 如果你运行的是默认的Apache(作为模块),那么你会想要更传统的线程安全版本。

请注意:这一切只适用于Windows用户。


我不打扰FastCGI(除非有人说服我,否则),所以对于我来说,我想要的VC9线程安全版本的PHP

就是这样。

进一步阅读:

  • 关于PHP和VC6的官方声明
  • PHP线程安全和非线程安全二进制之间的区别
  • FastCGI在维基百科
  • FastCGI for IIS
  • 在维基百科的Visual C ++
  • 编译你自己的PHP(对VC6 / VC9的解释)

我个人使用虚拟LAMP服务器。 我使用的每个托管服务都是基于Linux的一些风格,WAMP和LAMP之间的差别太大了。 然后,我只使用该版本的Linux的默认tasksel LAMP服务器。

我现在的实际安装是使用VMWare(Mac上的Fusion,Windows上的播放器)。 我有3个虚拟机 – 一个用于Ubuntu 5.04 LTS的PHP5.3,另一个用于Ubuntu 8.04 LTS的PHP 5.1。 (我使用的主机之一是RedHat,目前只支持PHP 5.1)。 我有第三个用于RubyOnRails开发的虚拟机。

换句话说,我试图让我的开发环境尽可能接近我的生产环境。 因此,请确定主机上的Apache和PHP版本是什么,并将其作为指导。