PHP版本如何選擇?應該使用哪個版本?_php技巧

來源:互聯網
上載者:User

超過75%的網站使用了PHP作為開發語言,wordpress,phpmyadmin和其他一些開源項目的盛行,帶來了一大批的長尾使用者。然而,他們一般安裝之後卻很少升級。下圖是目前PHP的使用統計。

驚人的是,此圖的左半部分表示已經不被支援的PHP版本。PHP 5.2早在2011年1月已經不再維護。這並不意味著你就不能使用它,但是這意味著某些安全更新,你就無法跟進了。一些發行版將嘗試修複一些BUG,但你的PHP版本似乎有點乏善可陳,因為,你正在使用的是2006年的過時技術。

該從哪裡開始

已經沒有人選擇PHP 5.2版本了,但這些事情已經發生了,但我不是說我寫這篇部落格來吐槽什麼,更不是說給你一些升級的指南。通常他們使用的都是一些2006開始的主機空間,他們有一個“長期支援”的版本,來避免使用更新的版本,或者他們目前還沒有升級的打算。又或者,理由真的很多。然而,好東西在新版的PHP等著您。

PHP 5.3 加入了很多有用的OOP特性!例如:匿名函數,SPL擴充不僅僅是迭代器,神話般的DateTime擴充都已經整合在PHP 5.3裡面。還加入極其重要的E_DEPRECATED的錯誤報表標誌。它會提醒您現在用的那些特性,將在下一版本無法使用。如果您已經在使用PHP 5.3,那麼您往後的升級道路將會更加順暢。如果您有線上程式運行在低版本,我不建議您升級。

PHP 5.4則進行了一系列的最佳化,它具有更快的執行效率和更少的記憶體佔用。以下是基準測試的結果。

不管你使用使用到traits特性,PHP 5.4提高了程式效能,並降低了硬體成本。所以,我建議您使用開源軟體的時候要保持升級。

PHP 5.5 還在測試當中,不適用於生產環境。自PHP 5.3之後,升級的風險和改動都會大大降低。

下面是麥子同學整理的文章

大家在選擇PHP版本時一定很困惑,有這麼多版本究竟選那個呢?

問題:

我們現在新買了個伺服器,用的是windows server 2008 r2。配置php 5.4的環境。

但我們之前開發的用2003,php是用5.2版本的,移植到新伺服器,程式運行會有影響嗎?或者我還需要注意那些問題?

API版本

PHP採用大版本向下相容的升級方式,也就是說5.5相容5.1-5.4,話雖如此,實際上相容性並不樂觀,大家也不要指望PHP官方會給出什麼好的解決辦法。現在2013年9月,版本有5.2.17 5.3.27 5.4.17 5.5.3

5.2.17

這一版本可以說是支援最廣泛的版本了,現在還有絕大部分開源軟體使用該版本,例如Drupal7.23,Joomla2.5,國內絕大多數軟體:dedecms5.7,discuzX3等等最新版還在支援5.2,如果沒特別要求,安裝這一版本是最省心省力的,但長遠來看可能終要被拋棄。現在許許多多的主機商為了省人力成本也懶得去升級PHP版本,反正基本上都支援。(這裡插一句,現在國內軟體為了相容更多的安裝環境,可謂用心良苦,甚至PHP5.1也能支援( discuzX3 不支援),最難得的是效能竟然也沒落後多少,能做到如些極致真心不容易!)Drupal6建議使用該版本。

5.3.28(推薦)

這個版本雖然名稱上是5開頭,但很多人認為是PHP6.0版本的開始,效能有所提升,而且因為許多API都發生了變化,對5.2的相容不太好,雖然有一部分開源軟體聲稱能相容5.2-5.3,但問題好像也不少,許多索性就放棄5.2了,例如Joomla3隻支援5.3以上。而對於Drupal7強烈建議使用該版本,支援相當好。而對於Drupal8也可以使用該版本,支援也相當不錯。該版本使用範圍非常廣,在兼顧效能和相容性之間做出一個不錯的平衡點。

5.4(輕輕推薦)

5.4基本上已經接近完整體了,現時比較完善,穩定性和效能也不錯,未來升級的重點版本,Drupal7.X對其支援尚可,但第三方模組還不太完美。如果懶得以後升級,可以一步到位安裝該版本。

5.5

從5.3開始,以後版本基本上都是主打效能上的提升,函數什麼的都能向後相容。5.5開始好像有了64位版本,效能更加強勁,我沒試過,不敢發表言論。

總結

如果開源軟體說建議安裝PHP5.3,那你就老老實實用5.3,別用5.5什麼的,你可能認為反正都能相容,效能可能更好,為什麼不用新的呢?話是這麼說,但你知道開源軟體在開發的時候一般都是在特定的環境開發,就算相容再好也會有想不到的意外(再強大的隊伍也不可能對所有函數API進行相容測試,那是相當可怕的工作量!),它只會在特定的環境下進行測試和最佳化,而且就算知道相容有問題,團隊也不會去為了相容更高版本去修改,不是他們死板,而是為了安全和穩定來考慮的。在開源氛圍下,我們應該有個意識就是“夠用就是最好”,而不是“最新是最好”。舉個列子,Joomla3.1在5.4-5.5都運行不良,甚至安裝不能成功。但Drupal卻在5.5.3下也運行正常(本機),我想是個別案例吧?但好像運行中出現過意料之外的錯誤,不知道是不是版本的問題,希望不是。


None-thread-safe or thread-safe

Apache 一般選 none-thread-safe,IIS選後者(FAST-CGI),我就不解釋了,信哥就沒錯。

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,非安全執行緒)的版本能夠更好的提高效率。

64位和32位

你的系統是64位就選64位,是32位就選32位,不解釋,信哥。 

未來

說實話,未來是屬於那些使用PHP5.4及以上的人。保持升級,定期跟蹤語言的新特性和進展是我們日常工作的一部分。如果您已經落後了,那麼我強烈建議您開始做升級計劃,升級到一個比較新的版本。努力是值得的,畢竟程式是長年累月啟動並執行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.