原文地址:
http://www.cnblogs.com/whoknows/articles/2425841.html
PHP版本VC6與VC9切端、Thread Safe與None-Thread Safe等的區(qū)別 最近發(fā)現(xiàn)很多PHP程序員對
PHP版本知識了解不是很清楚,自己也看了不少類似的文章侈咕,還是感覺不夠明確和全面搏嗡,網(wǎng)上的結(jié)論又都是模棱兩可够吩,在此战授,給出最完整甚至武斷的解釋砍聊。
本文講解:VC6與VC9背稼,Thread Safety與None-Thread Safe,Apache module與fastcgi的區(qū)別與選擇玻蝌。
PHP的大版本主要分三支:PHP4/PHP5/PHP6
其中蟹肘,PHP4由于太古老词疼、對OO支持不力已基本被淘汰,請無視PHP4帘腹。
PHP6由于基本沒有生產(chǎn)線上的應(yīng)用贰盗,還基本只是一款概念產(chǎn)品,很多功能已在PHP5.3.3上實(shí)現(xiàn)阳欲,所以也不詳述舵盈,請無視PHP6。
PHP5的版本主要分四支:PHP5.2之前的版本球化、PHP5.2.X秽晚、PHP5.3和日前發(fā)布的PHP5.4。
那我們應(yīng)該如何選擇適用自己項(xiàng)目的版本呢筒愚?
PHP5.2之前的版本不值得考慮赴蝇,因?yàn)槟承┕δ苋毕莼蛘連UG,PHP5.2之前的版本巢掺。PHP5.4還處于Beta試用的版本號句伶,非穩(wěn)定版本,請無視PHP5.4址遇。
主流PHP程序?qū)HP5.2.X的兼容性最好熄阻,而每次版本號的升級帶來的都是安全性和穩(wěn)定性的改善,所以宜挑選最新的版本倔约。目前PHP5.2系列最新的是PHP5.2.17秃殉。
而如果產(chǎn)品是自己開發(fā)自己使用,PHP5.3在某些方面更具優(yōu)勢浸剩,在穩(wěn)定性上更勝一籌钾军,增加了很多PHP5.2所不具有的功能,比如內(nèi)置php-fpm绢要、更完善的垃圾回收算法吏恭、命名空間的引入、sqlite3的支持等等重罪,是部署項(xiàng)目值得考慮的版本樱哼,強(qiáng)烈推薦PHP5.3.3。
除了版本號的不同剿配,同一版本號的PHP版本也有區(qū)別搅幅,并且在選擇PHP擴(kuò)展的時(shí)候需要注意。
?install版:可執(zhí)行的MSI格式安裝包呼胚。
?ZIP版:解壓即可用茄唐。和install版無區(qū)別。建議選擇ZIP版蝇更。
?DEBUG版:請無視沪编。
VC6與VC9
對于VC6還是VC9版本的選擇呼盆,PHP官方網(wǎng)站有詳細(xì)的描述,原文如下:
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我該選擇哪個(gè)版本蚁廓?
如果你在apache1或者apache2下使用PHP访圃,你應(yīng)該選擇VC6的版本
如果你在IIS下使用PHP應(yīng)該選擇VC9的版本
VC6的版本使用visual studio6編譯
VC9使用Visual Studio 2008編譯,并且改進(jìn)了性能和穩(wěn)定性相嵌。VC9版本的PHP需要你安裝Microsoft 2008 C++ Runtime
不要在apache下使用VC9的版本TS和NTS
TS指Thread Safety挽荠,即線程安全,一般在IIS以ISAPI方式加載的時(shí)候選擇這個(gè)版本平绩。
NTS即None-Thread Safe,一般以fast cgi方式運(yùn)行的時(shí)候選擇這個(gè)版本漠另,具有更好的性能捏雌。
從2000年10月20日發(fā)布的第一個(gè)Windows版的PHP3.0.17開始的都是線程安全的版本,這是由于與Linux/Unix系統(tǒng)是采用多進(jìn)程的工作方式不同的是Windows系統(tǒng)是采用多線程的工作方式笆搓。如果在IIS下以CGI方式運(yùn)行PHP會(huì)非常慢性湿,這是由于CGI模式是建立在多進(jìn)程的基礎(chǔ)之上的,而非多線程满败。一般我們會(huì)把PHP配置成以ISAPI的方式來運(yùn)行肤频,ISAPI是多線程的方式,這樣就快多了算墨。但存在一個(gè)問題宵荒,很多常用的PHP擴(kuò)展是以Linux/Unix的多進(jìn)程思想來開發(fā)的,這些擴(kuò)展在ISAPI的方式運(yùn)行時(shí)就會(huì)出錯(cuò)搞垮IIS净嘀。因此在IIS下CGI模式才是 PHP運(yùn)行的最安全方式报咳,但CGI模式對于每個(gè)HTTP請求都需要重新加載和卸載整個(gè)PHP環(huán)境,其消耗是巨大的挖藏。
為了兼顧IIS下PHP的效率和安全暑刃,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進(jìn)程重復(fù)利用而不是每一個(gè)新的請求就重開一個(gè)進(jìn)程膜眠。同時(shí)FastCGI也可以允許幾個(gè)進(jìn)程同時(shí)執(zhí)行岩臣。這樣既解決了CGI進(jìn)程模式消耗太大的問題,又利用上了CGI進(jìn)程模式不存在線程安全問題的優(yōu)勢宵膨。
因此架谎,如果是使用ISAPI的方式來運(yùn)行PHP就必須用Thread Safe(線程安全)的版本;而用FastCGI模式運(yùn)行PHP的話就沒有必要用線程安全檢查了柄驻,用None Thread Safe(NTS狐树,非線程安全)的版本能夠更好的提高效率。
如何查看當(dāng)前運(yùn)行的PHP的版本鸿脓?一個(gè)很簡單的辦法就是phpinfo();
Thread Safety disabled是NTS抑钟,enabled是TS
Configure Command看到VC98字樣的是VC6涯曲,Compiler標(biāo)明 MSVC9 (Visual C++ 2008) 的是VC9
在WIN7下:IIS7+NTS+FastCGI+vc9 或者apache+fastcgi+nts+vc6較好。
在WINXP下:Apache+TS+Apache module +vc6最合適的搭檔在塔。