|
php版本主要分三支:php4/php5/php6
其中,php4由于太古老、對(duì)OO支持不力已基本被淘汰,就不在詳述。
而php6由于基本沒(méi)有生產(chǎn)線上的應(yīng)用,還基本只是一款概念產(chǎn)品,所以也不詳述。
php5的版本主要分三支:php5.2之前的版本、php5.2.X和php5.3
那我們應(yīng)該如何選擇適用自己項(xiàng)目的版本呢?
php5.2之前的版本不值得考慮,因?yàn)槟承┕δ苋毕莼蛘連UG。
主流php程序?qū)?a href=/itjie/phpjishu/ target=_blank class=infotextkey>php5.2.X的兼容性最好,而每次版本號(hào)的升級(jí)帶來(lái)的都是安全性和穩(wěn)定性的改善,所以宜挑選最新的版本。目前php5.2系列最新的是php5.2.14
而如果產(chǎn)品是自己開(kāi)發(fā)自己使用,php5.3在某些方面更具優(yōu)勢(shì),在穩(wěn)定性上更勝一籌,增加了很多php5.2所不具有的功能,比如內(nèi)置php-fpm、更完善的垃圾回收算法、命名空間的引入、sqlite3的支持等等,是部署項(xiàng)目值得考慮的版本。
除了版本號(hào)的不同,同一版本號(hào)的php版本也有區(qū)別,并且在選擇php擴(kuò)展的時(shí)候需要注意。
VC6與VC9
對(duì)于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 binarieshttp://dev.meettea.com
我該選擇哪個(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è)版本,具有更好的性能。
下面給點(diǎn)資料,來(lái)源于 http://koda.Javaeye.com/blog/662034
從2000年10月20日發(fā)布的第一個(gè)Windows版的php3.0.17開(kāi)始的都是線程安全的版本,這是由于與Linux/Unix系統(tǒng)是采用多進(jìn)程的工作方式不同的是Windows系統(tǒng)是采用多線程的工作方式。如果在IIS下以CGI方式運(yùn)行php會(huì)非常慢,這是由于CGI模式是建立在多進(jìn)程的基礎(chǔ)之上的,而非多線程。一般我們會(huì)把php配置成以ISAPI的方式來(lái)運(yùn)行,ISAPI是多線程的方式,這樣就快多了。但存在一個(gè)問(wèn)題,很多常用的php擴(kuò)展是以Linux/Unix的多進(jìn)程思想來(lái)開(kāi)發(fā)的,這些擴(kuò)展在ISAPI的方式運(yùn)行時(shí)就會(huì)出錯(cuò)搞垮IIS。因此在IIS下CGI模式才是 php運(yùn)行的最安全方式,但CGI模式對(duì)于每個(gè)HTTP請(qǐng)求都需要重新加載和卸載整個(gè)php環(huán)境,其消耗是巨大的。
為了兼顧IIS下php的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓php的進(jìn)程重復(fù)利用而不是每一個(gè)新的請(qǐng)求就重開(kāi)一個(gè)進(jìn)程。同時(shí)FastCGI也可以允許幾個(gè)進(jìn)程同時(shí)執(zhí)行。這樣既解決了CGI進(jìn)程模式消耗太大的問(wèn)題,又利用上了CGI進(jìn)程模式不存在線程安全問(wèn)題的優(yōu)勢(shì)。
因此,如果是使用ISAPI的方式來(lái)運(yùn)行php就必須用Thread Safe(線程安全)的版本;而用FastCGI模式運(yùn)行php的話就沒(méi)有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)的版本能夠更好的提高效率。
如何查看當(dāng)前運(yùn)行的php的版本?一個(gè)很簡(jiǎn)單的辦法就是phpinfo();
Thread Safety disabled是NTS,enabled是TS
Configure Command看到VC98字樣的是VC6,Compiler標(biāo)明 MSVC9 (Visual C++ 2008) 的是VC9
另外,順帶講講windows下比較簡(jiǎn)潔方便的php配置方法,網(wǎng)上教的什么復(fù)制php.ini到windows目錄、復(fù)制xxxxx.dll到system32下,太丑陋了。
1、下載zip版本的php
2、下載好相應(yīng)的擴(kuò)展,修改好php.ini,添加模塊映射3、環(huán)境變量里PATH加上php存放的目錄。只要一個(gè)就夠了,/bin和/ext不需要加。4、環(huán)境變量里定義一個(gè)phpRC變量,內(nèi)容為php.INI的存放路徑。
完畢。很多文章提及需要重啟系統(tǒng),可是從我遇上的情況來(lái)看,并無(wú)必要,最多重啟web服務(wù)。
如果你是linux下用,就無(wú)視本文吧。
修訂: 2010-11-03
At Last,近期思考了很多東西,若整理成文又欠缺深度和力度,還需厚積薄發(fā)。
php技術(shù):PHP多個(gè)版本的分析解釋,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。