`

PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别

阅读更多

 最近发现很多PHP程序员对PHP版本知识了解不是很清楚,自己也看了不少类似的文章,还是感觉不够明确和全面,网上的结论又都是模棱两可,在此,给出最完整甚至武断的解释。

    本文讲解:VC6与VC9,Thread Safety与None-Thread Safe,Apache module与fastcgi的区别与选择。

PHP的大版本主要分三支:PHP4/PHP5/PHP6

  其中,PHP4由于太古老、对OO支持不力已基本被淘汰,请无视PHP4。

  PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP5.3.3上实现,所以也不详述,请无视PHP6。

  PHP5的版本主要分四支:PHP5.2之前的版本、PHP5.2.X、PHP5.3和日前发布的PHP5.4。

那我们应该如何选择适用自己项目的版本呢?

    PHP5.2之前的版本不值得考虑,因为某些功能缺陷或者BUG,PHP5.2之前的版本。PHP5.4还处于Beta试用的版本号,非稳定版本,请无视PHP5.4。

  主流PHP程序对PHP5.2.X的兼容性最好,而每次版本号的升级带来的都是安全性和稳定性的改善,所以宜挑选最新的版本。目前PHP5.2系列最新的是PHP5.2.17。

  而如果产品是自己开发自己使用,PHP5.3在某些方面更具优势,在稳定性上更胜一筹,增加了很多PHP5.2所不具有的功能,比如内置php-fpm、更完善的垃圾回收算法、命名空间的引入、sqlite3的支持等等,是部署项目值得考虑的版本,强烈推荐PHP5.3.3。

  除了版本号的不同,同一版本号的PHP版本也有区别,并且在选择PHP扩展的时候需要注意。

  • install版:可执行的MSI格式安装包。
  • ZIP版:解压即可用。和install版无区别。建议选择ZIP版。
  • DEBUG版:请无视。

VC6与VC9

   对于VC6还是VC9版本的选择,PHP官方网站有详细的描述,原文如下:

Which version do I choose?

If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP
If you are using PHP with IIS you should use the VC9 versions of PHP
VC6 Versions are compiled with the legacy Visual Studio 6 compiler
VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability. The VC9 versions require you to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++ Runtime (x64) installed
Do NOT use VC9 version with apache.org binaries
我该选择哪个版本?

如果你在apache1或者apache2下使用PHP,你应该选择VC6的版本
如果你在IIS下使用PHP应该选择VC9的版本
VC6的版本使用visual studio6编译
VC9使用Visual Studio 2008编译,并且改进了性能和稳定性。VC9版本的PHP需要你安装Microsoft 2008 C++ Runtime
不要在apache下使用VC9的版本

TS和NTS

TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。

NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。

  从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是 PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。

  为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。

  因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

如何查看当前运行的PHP的版本?一个很简单的办法就是phpinfo();

Thread Safety disabled是NTS,enabled是TS

Configure Command看到VC98字样的是VC6,Compiler标明 MSVC9 (Visual C++ 2008) 的是VC9

在WIN7下:IIS7+NTS+FastCGI+vc9 是最佳搭档或者apache+fastcgi+nts+vc6。

在WINXP下:Apache+TS+Apache module +vc6最合适的搭档。

分享到:
评论

相关推荐

    php-5.4.37-Win32-VC9-x86

    从5.2.1版本开始,就有ts和nts的区别,Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全) Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于...

    VC6VC9ThreadSafety等等,本文告诉你该如何选PHP版本!.doc

    PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别最近发现很多PHP程序员对PHP版本知识了解不是很清楚,自己也看了不少类似的文章,还是感觉不够明确和全面,网上的结论又都是模棱两可,在此,给出最完整甚至...

    php5 non-thread-safe和thread-safe这两个版本的区别分析

    先从字面意思上理解,None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统...

    PHP中VC6、VC9、TS、NTS版本的区别与用法详解

    接下来,我们讨论TS(Thread Safe)和NTS(NoneThread Safe)的区别。TS和NTS主要涉及到线程安全问题。在Windows平台上,从PHP 5.2.1开始,PHP提供了这两种不同的线程安全选项。Thread Safe版本的PHP在执行时会进行...

    php-5.5.0-Win32-VC11-x64.zip

    IIS下,使用ISAPI方式运行PHP,就使用Thread Safe(线程安全)的版本,使用FastCGI方式运行PHP,就使用None Thread Safe(NTS,非线程安全)的版本。 注:php5.2没有vc9,php5.3、php5.4没有vc6。呵呵。PHP5.5开始,不...

    PHP版本选择

    本文将深入探讨PHP版本选择的关键因素,包括VC6与VC9的区别、线程安全(Thread Safety,简称TS)与非线程安全(None-Thread Safe,简称NTS)、以及不同服务器环境下的适配。 首先,PHP版本主要分为PHP4、PHP5和PHP6...

    php指南白菜版

    - **PHP安装**:建议从PHP官网下载指定版本的安装包(如PHP 5.3.3的VC6x86 Thread Safe ZIP版本),并根据实际情况选择合适的版本(如Apache环境下的VC6版本)。 - **配置解释**:针对不同Web服务器(如Apache或IIS...

    PHP 线程安全与非线程安全版本的区别深入解析

    PHP官方提供了不同编译器版本的Windows PHP,如VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 NonThread Safe以及VC6 x86 Thread Safe。其中,VC9版本是使用Visual Studio 2008编译器编译的,专为IIS...

    WAMP(windows+apache+mysql+php)安装与配置.pdf

    - 推荐版本:VC6 x86 Thread Safe Zip - 这个版本适用于Windows 32位系统,并且支持线程安全(Thread Safe)。 3. **MySQL安装包**: - 访问官网下载页面:[http://dev.mysql.com/downloads/]...

    PHP+Apache+Mysql环境搭建教程

    在进去的界面中可以看到主要有VC11 X64 Thread Safe,VC11 X64 None Thread Safe等版本,我选择的是VC11 X64 Thread Safe线程安全的ZIP压缩包。 下载完后直接解压到你想要安放的目录下,切记必

    Windows下的PHP安装文件线程安全和非线程安全的区别

    在选择PHP版本时,还需注意编译PHP时所使用的编译器,比如vc9(Visual Studio系列)、vc6(GCC)等。不同的编译器可能会对PHP的性能有所影响,但这通常与线程安全问题无关,更与具体的服务器环境和运行模式相关。 ...

Global site tag (gtag.js) - Google Analytics