這篇文章主要介紹了PHP 7安裝使用體驗之性能大提升,兼容性強,擴展支持不夠(升級PHP要謹慎),非常具有實用價值,需要的朋友可以參考下
伴隨著PHP 7的發布,這幾天關於PHP 7性能和兼容性成了大家討論的熱點話題,PHP 7表現出來的高性能讓不少人蠢蠢欲動,有些「嚐鮮」的朋友已經將PHP 7應用到了生產環境當中了。同時,LNMP等熱門應用程式也及時做了更新,紛紛開始支援PHP 7。
提到PHP效能問題,不得不說之前分享的HHVM,這是臉譜公司為提高PHP效能而開發出來的工具,使用了Just-In-Time (JIT) 編譯方式將PHP 程式碼轉換成某種字節碼。實際測試過程中,HHVM對於PHP的性能提升是一個質的飛躍,高效的PHP運行環境提升PHP性能9倍以上。
近年來PHP廣為人詬病就是性能瓶頸方面的問題,不少的開發者紛紛棄PHP而逃,而HHVM的完美表現對於PHP發展是非常不利的。 PHP 7 是 PHP 社群對 HHVM 的回應,PHP 7正式發布版在PHP效能方面很到了非常大的改善,實際測試發現在部分場合PHP 7效能超過了HHVM。
這篇文章就為大家帶來PHP 7安裝與使用體驗,想要急切體驗PHP 7性能的朋友,在正式升級PHP之前最好多做幾次程序兼容性測試,雖然官方說PHP 7向後相容性有99%,但為了保險起見我們應用在生產環境當中還是需要保持謹慎的態度。
PHP 7安裝使用體驗:效能提升,相容性強,擴充支援不夠,升級PHP要謹慎
一、發揮PHP 7高效能的幾個要點
PHP 7相對於之前的PHP版本來說可以說性能有了質的飛躍,但是所謂“好馬配好鞍,好車配風帆”,想要發揮PHP 7的效能優勢,也需要從以下幾個面向做準備:(此部分引自PHP7核心開發者, Yaf, Yar, Yac等專案作者:Laruence)。
1. 記得啟用Zend Opcache,啟用Opcache非常簡單, 在php.ini設定檔中加入:
zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=1"
2. 使用新的編譯器, 推薦GCC 4.8以上, 因為只有GCC 4.8以上PHP 7才會開啟Global Register for opline and execute_data支援, 這會帶來5%左右的效能提升。
3. 開啟HugePage有利於PHP 7更快, 首先在系統中開啟HugePages, 然後開啟Opcache的huge_code_pages,以CentOS 6.5為例, 透過指令:$sudo sysctl vm.nr_hugepages=512,分配512個預留的大頁內存:
$ cat /proc/meminfo | grep Huge AnonHugePages: 106496 kB HugePages_Total: 512 HugePages_Free: 504 HugePages_Rsvd: 27 HugePages_Surp: 0 Hugepagesize: 2048 kB
然後在php.ini中加入:opcache.huge_code_pages=1,這樣一來, PHP會把自身的text段, 以及內存分配中的huge都採用大內存頁來保存, 減少TLB miss, 從而提高性能.
4. 開啟Opcache File Cache(實驗性), 通過開啟這個, 可以讓Opcache把opcode快取快取到外部文件中, 對於一些腳本, 會有很明顯的效能提升。方法是在php.ini加入:opcache.file_cache=/tmp。這樣PHP就會在/tmp目錄下Cache一些Opcode的二進位匯出檔, 可以跨PHP生命週期存在.
5. PGO。如果你的PHP是專門為一個專案服務, 例如只是為你的Wordpress, 或drupal, 或其他什麼, 那麼你就可以嘗試透過PGO, 來提升PHP, 專門為你的這個專案提高效能。具體的, 以wordpress 4.1為優化場景.. 首先在編譯PHP的時候首先:$ make prof-gen。
6、然後用你的專案訓練PHP, 例如對於Wordpress:$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/ dev/null,也就是讓php-cgi跑100遍wordpress的首頁, 從而產生一些在這個過程中的profile資訊。最後:
$ make prof-clean $ make prof-use && make install
7、這時候你編譯得到的PHP7就是為你的專案量身打造的最高效能的編譯版本。
二、PHP 7安裝與編譯
1、PHP 7官網:
2、動手能力強的朋友,可以自己直接到官方下載PHP 7,然後手動編輯安裝。如果你已經習慣使用lnmp.org站長的LNMP一鍵安裝包,可以試試發布LNMP 1.3測試版,已經增加了增加php7支援:網站平滑遷移到LNMP或LAMP建站環境的方法 。
3、OneinStack提供的LNMP安裝包已經有了PHP 7一鍵安裝了,在執行腳本的時候,可以選擇PHP 7安裝,PHP 7目前只有官方自帶的Zend Opcache擴充可供安裝。
4、OneinStack安裝PHP 7安裝成功。
5、這是PHP 7資訊顯示。
6、這是OneinStack提供的PHP 7的Opcache控制面板。
三、PHP 7與舊版PHP、HHVM效能比較
1、這是國外開發者測試的PHP 7與PHP 5.6在Wordpress、Drupal等熱門程式下表現的效能,結果很明顯PHP 7效能提升很多。
2、PHP 7對於Wordpress等程式來說,不僅提升單一執行速度,隨著Wordpress運行在PHP 7的時間越久,效能提升就更多。
3、上文也說到PHP 7對於PHP的效能提昇在某些方面已經超過了HHVM,這是國外zend.com官網給出的PHP 5.6 、PHP 7、HHVM在不同的程序下執行效率對比結果。
4、在專業開源的電子商務系統Magento上測試PHP 5.6、PHP 7、HHVM的執行效率,PHP 7是PHP 5.6運行速度的兩倍,而記憶體佔用還比PHP 5.6低30% 。
5、Drupal 8上測試PHP 7的效率是最快的,已經超過HHVM了。
6、Wordpress測試時發現,PHP 5.6執行需要佔用100MB內存,而PHP 7只要25MB。
7、在不同的程式執行速度上,PHP 7顯然已經領先,Ruby 2.1、Python 2.7.8、Perl 5.18.4都不及PHP 7。
四、PHP 7效能測試結果報告
1、空說無憑,PHP 7運行程式的效能到底如何呢?這裡部落以一個全新的Wordpress為測試對象,運行在PHP 7上Wordpress首頁載入時間測試顯示0.029秒,記憶體是3.39MB。
2、這是同樣的Wordpress頁面運行PHP 5.6上的頁面載入時間:1.955秒,記憶體佔用了3.92MB。從數據上看,PHP 7已經完勝了PHP 5.6了。
3、PHP 7運行Wordpress的效率相對於之前的版本確實有了質的提升,為了全面了解PHP 7的性能,這裡按照網站伺服器壓力Web性能測試的方法,用Webbench模擬10秒內200、400個連線數,速度都是8000頁/分以上。
4、此時,VPS伺服器系統負載是3.49。
5、把模擬的連線數提高到1600個,速度還是保持在8000頁/分以上。
6、此時,VPS伺服器系統負載是17,應該有點吃力了。
7、把模擬的連線數提高到5000個,速度是4800頁/分,速度開始慢下來了。
8、此時,VPS伺服器系統負載是23,伺服器負責過重了。
9、為了測試PHP 7在本VPS主機承受能力的極限,Webbench模擬10000個連線數在20秒不斷存取伺服器。
10、此時,VPS伺服器的系統負載近90,應該是到達極限了,但是伺服器還是沒有當機。
11、接下來,讓我們來看看同樣配置的VPS主機運行Wordpress的壓力測試結果,首先是用Webbench模擬10秒內200、400個連接數,速度是3600頁/分,相對於上面的PHP 7測試的速度慢了一半。
12、這是PHP 5.6測試200、400個連接數的系統負載,已經達到了10,明顯超出了在PHP 7環境上測試的3.49。
13、在PHP 5.6測試將類比連線數提高到1000、2000個,此時速度已經降到1600頁/分,連線成功數也降低到了500左右,遠低於在PHP 7測試時的2700。
14、此時,系統負載達到了17了。
15、在PHP 5.6中用Webbench測試連線數為10000,在20秒內持續存取伺服器。此時,測試已經卡住,沒有結果。
16、這裡VPS伺服器的系統負載已經達到了1000以上,伺服器已經崩潰了。
17、PHP 5.6下的Wordpress網站已經宕機了。
五、PHP 7相容性問題
1、目前國內的Discuz等還不支援PHP 7,PHP擴充也就只有官方的Opcache可以使用,其它的如eAccelerator、xcache、memcached等,大家可以隨時關注擴展支援列表:
2、經過測試,PHP 7運行Wordpress沒有任何問題。
3、在PHP 7上安裝Wordpress外掛都沒有問題。
4、PHP 7還有部分函數、運算子等可能出現不相容問題,不過99%的程式可能不會用到這些。
六、PHP 7安裝使用體驗小結
1、使用PHP 7後有一個驚喜就是,確實如國外開發者測試的那樣,PHP 7性能基本上與HHVM持平,由於HHVM借助實時(Just In Time)編譯器將PHP 程式碼編譯至機器指令,所以不少的PHP程式運行在HHVM是需要改良的。
2、PHP 7具備了HHVM的超高性能,同時又有了PHP向後相容的優勢,相信在不久的未來PHP 7會得到越來越多人的認可和接受。雖然目前支援PHP 7的快取、加速等擴充功能還不多,但這只是時間問題,越來越多的開發者會加入PHP 7的開發行列。
以上是php7使用經驗之性能大提升和相容性強以及擴展支援不夠的圖文詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!