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

相關文章
相關標籤/搜索