Thread Safe和Non Thread安全PHP Windows安装包之间有哪些技术差异?

时间:2011-04-26 17:00:05

标签: php windows apache

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

PHP is available in no less than four flavours

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

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

如果这还不够复杂,PHP的5.3版只能在VC9中使用(5.2附带VC6软件包)。然而,根据PHP网站,你应该使用VC9和Apache ...那么为什么Apache会获得旧版本?

这一切都非常令人困惑,我希望能帮助理解这些选择。

2 个答案:

答案 0 :(得分:53)

经过大量的研究,我找到了自己对这个问题的答案。

在最基本的表单中,答案是: 您应该安装的PHP版本来自您正在运行的网络服务器。

以下是根据我学到的内容选择PHP版本所使用的术语的更深层次解释:


VC6与VC9

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

为不同的编译器制作了不同版本的Apache。例如,可从ApacheLounge.com下载的版本可以使用2008年开始使用的流行且更新的编译器 Microsoft Visual C ++ 9 进行编译。也称为 VC9 < / strong>即可。

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

使用这个更新的编译器(VC9)非常重要,因为最新版本的PHP仅以VC9形式发布(尽管旧版本仍可用于VC6)。

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

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

  

Windows用户:请注意我们这样做   不再提供使用创建的构建   Visual Studio C ++ 6(VC6)。它是   不可能保持高品质   并安全地构建PHP for Windows   使用这个未维护的编译器。

     

我们建议将VC9 Apache构建为   由ApacheLounge提供

     

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

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

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

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

线程安全与非线程安全

再次归结为您的网络服务器。默认情况下,Apache在Windows上安装为模块,但可以将其更改为以 FastCGI 运行。两者之间存在很多差异,但基本上FastCGI更现代,更快,更强大,更耗资源。对于运行本地开发环境的人来说,FastCGI可能有点过分,但很多托管公司因为我所说的原因而以FastCGI运行,因此在开发环境中这样做有很好的理由。

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

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


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

就是这样。

进一步阅读:

答案 1 :(得分:1)

就个人而言,我使用的是虚拟LAMP服务器。我使用的每个托管服务都在Linux的某些风格上,并且WAMP和LAMP之间存在太多差异。然后我只使用该版本Linux的默认tasksel LAMP服务器。

我现在的实际设置是VMWare(Mac上的Fusion,Windows上的Player)。我有3个虚拟机 - 一个用于PHP5.3,Ubuntu 10.04 LTS,另一个用于PHP 5.1,用于Ubuntu 8.04 LTS。 (我使用的主机之一是RedHat,目前只支持PHP 5.1)。我有第三个用于RubyOnRails dev的VM。

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