PHP版本选择讲解:VC6与VC9,Thread Safe与None-Thread Safe等的选择

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

     PHP版本主要分三支:PHP4/PHP5/PHP6
     其中,PHP4由于太古老、对OO支持不力已基本被淘汰,请无视PHP4
     PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP5.3.3上实现,所以也不详述,请无视PHP6

    PHP5的版本主要分三支:PHP5.2之前的版本、PHP5.2.X和PHP5.3
    那我们应该如何选择适用自己项目的版本呢?
    PHP5.2之前的版本不值得考虑,因为某些功能缺陷或者BUG,请无视PHP5.1
    主流PHP程序对PHP5.2.X的兼容性最好,而每次版本号的升级带来的都是安全性和稳定性的改善,所以宜挑选最新的版本。目前PHP5.2系列最新的是PHP5.2.14.
     而如果产品是自己开发自己使用,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 binarieshttp://dev.meettea.com

我该选择哪个版本?
如果你在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方式运行的时候选择这个版本,具有更好的性能。
     下面给点资料,来源于 http://koda.javaeye.com/blog/662034
     从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最合适的搭档
关于FASTCGI配置,可看此文。windows+apache+PHP5.3+fcgid fastcgi运行配置


     另外,顺带讲讲windows下比较简洁方便的PHP配置方法(windows下安装PHP),网上教的什么复制php.ini 到windows目录、复制xxxxx.dll到system32下,神马设置环境变量,太丑陋了。
1、下载zip版本的PHP,解压。
2、下载好相应的扩展,修改好php.ini
请了解:不需要复制任何文件以及设置任何环境变量。(此种配置是最简洁最干净的手工配置)
完毕。重启web服务。

最后,如果你是linux下用,就无视本文吧。你是nginx,也请无视。
要是你真的很懒,只是想随便玩玩的话,建议使用windows下的PHP集成环境安装包
注:刚看到此文,感觉作者写得还不是很详细,就搬过来,做了一定的补充,让新手理解起来更加明确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值