PHP版本VC6与VC9/VC11/VC1四、Thread Safe与None-Thread Safe等的区别

       最近正好在弄一个PHP的程序,在这以前一直没有怎么以接触,发现对PHP版本知识了解不是很清楚,本身看了很多相似的文章,仍是感受不够明确和全面,php

       网上的结论又都是模棱两可,在此,给出最完整甚至武断的解释。(内面部份内容是摘自其它程序员的博文)程序员

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

    PHP的大版本主要分支:PHP4/PHP5/PHP7(PHP6官方没有)

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

  PHP6/PHP7因为基本没有生产线上的应用,还基本只是一款概念产品,不少功能已在PHP5.3.3上实现,因此也不详述,请无视PHP6/7。apache

  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。php-fpm

  而若是产品是本身开发本身使用,PHP5.3在某些方面更具优点,在稳定性上更胜一筹,增长了不少PHP5.2所不具备的功能,好比内置php-fpm、更完善的垃圾回收算法、命名空间的引        入、sqlite3的支持等等,是部署项目值得考虑的版本,强烈推荐PHP5.3.29。(这是5.3 的最后一个版本)性能

     php5.6 、php5.5对应vc11 网站

     php5.4 对应VC9

     官方上以前的版本已没有了。 

  除了版本号的不一样,同一版本号的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 win2008 下:IIS7+NTS+FastCGI+vc9 是最佳搭档或者apache+fastcgi+nts+vc6。

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

 

以上红色部分 即为我本次使用的环境,亲测无任何问题。 

欢迎加入技术分享群:238916811

 官方下载地址:

http://www.php.net/downloads.php

http://down.chinaz.com/server/201111/1329_1.htm

相关文章
相关标签/搜索