PHP 7安裝使用體驗,升級PHP要謹慎

jopen 8年前發布 | 93K 次閱讀 PHP開發

一、發揮PHP 7高性能的幾個要點

PHP 7相對于之前的PHP版本來說可以說性能有了質的飛躍,但是所謂“好馬配好鞍,好車配風帆”,想要發揮PHP 7的性能優勢,還需要從以下幾個方面做準備:(此部分引自PHP7核心開發者, Yaf, Yar, Yac等項目作者:Laruence)。

PHP 7使用注意事項

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%左右的性能提升。

PHP 7使用新的編譯器

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發揮高性能

二、PHP 7安裝與編譯

1、PHP 7官網:

  • 1、官網:http://php.net/
  • 2、下載:http://php.net/downloads.php

2、動手能力強的朋友,可以自己直接到官方下載PHP 7,然后手動編輯安裝。如果你已經習慣使用lnmp.org站長的LNMP一鍵安裝包,可以試試發布LNMP 1.3測試版,已經增加了增加php7支持:網站平滑遷移到LNMP或LAMP建站環境的方法 。

3、OneinStack提供的LNMP安裝包已經有了PHP 7一鍵安裝了,在執行腳本的時候,可以選擇PHP 7安裝,PHP 7目前只有官方自帶的Zend Opcache擴展可供安裝。

PHP 7一鍵安裝

4、OneinStack安裝PHP 7安裝成功。

PHP 7安裝成功

5、這是PHP 7信息顯示。

PHP 7版本信息顯示

6、這是OneinStack提供的PHP 7的Opcache控制面板。

PHP 7的Opcache信息

三、PHP 7與老版本PHP、HHVM性能對比

1、這是國外開發者測試的PHP 7與PHP 5.6在Wordpress、Drupal等熱門程序下表現的性能,結果很明顯PHP 7性能提升很多。

PHP 7熱門程序性能

2、PHP 7對于Wordpress等程序來說,不僅僅提升單個執行速度,隨著Wordpress運行在PHP 7的時間越久,性能提升就更多。

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%。

PHP 7在Magento測試的性能

5、Drupal 8上測試PHP 7的效率是最快的,已經超過了HHVM。

PHP 7在Drupal 8測試性能

6、Wordpress測試時發現,PHP 5.6執行需要占用100MB內存,而PHP 7只要25MB。

PHP 7執行時間

7、在不同的程序執行速度上,PHP 7顯然已經領跑,Ruby 2.1、Python 2.7.8、Perl 5.18.4都不及PHP 7。

PHP 7領跑各大程序

四、PHP 7性能測試結果報告

1、空說無憑,PHP 7運行程序的性能到底如何呢?這里部落以一個全新的Wordpress為測試對象,運行在PHP 7上Wordpress首頁加載時間測試顯示0.029秒,內存是3.39MB。

PHP 7加載頁面時間

2、這是同樣的Wordpress頁面運行PHP 5.6上的頁面加載時間:1.955秒,內存占用了3.92MB。從數據上看,PHP 7已經完勝了PHP 5.6了。

PHP 7占用內存

3、PHP 7運行Wordpress的效率相對于之前的版本確實有了質的提升,為了全面了解PHP 7的性能,這里按照網站服務器壓力Web性能測試的方法,用Webbench模擬10秒內200、400個連接數,速度都是8000頁面/分以上。

PHP 7壓力測試

4、此時,VPS服務器系統負載是3.49。

PHP 7系統負載

5、把模擬的連接數提高到1600個,速度依然保持在8000頁面/分以上。

PHP 7服務器速度

6、此時,VPS服務器系統負載是17,應該有點吃力了。

PHP 7系統負載承受力

7、把模擬的連接數提高到5000個,速度是4800頁面/分,速度開始慢下來了。

PHP 7提高模擬數

8、此時,VPS服務器系統負載是23,服務器負責過重了。

PHP 7最大的承受負載

9、為了測試PHP 7在本VPS主機承受能力的極限,Webbench模擬10000個連接數在20秒不斷訪問服務器。

PHP 7能力極限

10、此時,VPS服務器的系統負載近90,應該是到達極限了,但是服務器依然沒有死機。

PHP 7沒有死機

11、接下來,讓我們來看看同樣配置的VPS主機運行Wordpress的壓力測試結果,首先是用Webbench模擬10秒內200、400個連接數,速度是3600頁面/分,相對于上面的PHP 7測試的速度慢了一半。

PHP 5.6比PHP 7速度慢

12、這是PHP 5.6測試200、400個連接數的系統負載,已經達到了10,明顯超出了在PHP 7環境上測試的3.49。

PHP 5.6比PHP 7系統負載高

13、在PHP 5.6測試將模擬連接數提高到1000、2000個,此時速度已經降到1600頁面/分,連接成功數也降低到了500左右,遠遠低于在PHP 7測試時的2700。

PHP 5.6比PHP 7減慢速度

14、此時,系統負載達到了17了。

PHP 5.6比PHP 7此時的壓力

15、在PHP 5.6中用Webbench測試連接數為10000,在20秒內不斷訪問服務器。此時,測試已經卡住,沒有結果。

PHP 5.6比PHP 7測試卡死

16、這里VPS服務器的系統負載已經達到了1000以上,服務器已經崩潰了。

PHP 5.6比PHP 7服務器崩潰

17、PHP 5.6下的Wordpress網站已經宕機了。

PHP 5.6比PHP 7網站宕機

五、PHP 7兼容性問題

1、目前國內的Discuz等還不支持PHP 7,PHP擴展也就只有官方的Opcache可以使用,其它的如eAccelerator、xcache、memcached等,大家可以隨時關注擴展支持列表:https://github.com/gophp7/gophp7-ext/wiki/extensions-catalog。php的memcache擴展已經有了:https://github.com/php-memcached-dev/php-memcached/tree/php7 和https://github.com/websupport-sk/pecl-memcache。感謝快樂家園博主的提醒。

PHP 7不兼容

2、經過測試,PHP 7運行Wordpress沒有任何問題。

PHP 7完美運行Wordpress

3、在PHP 7上安裝Wordpress插件都沒有問題。

PHP 7可以安裝各種插件

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的開發行列中。

來自: http://www.phpxs.com/j/php7/1001234

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!