PHP 7.3聲稱速度比PHP 5快3倍還多,值得更新了!

PHP 7.3聲稱速度比PHP 5快3倍還多,值得更新了!

作爲PHP5的最後一個版本,也是目前使用最廣泛的PHP版本,PHP 5.6始於公元2014年(不是1804年,嘿嘿),其第一個測試版PHP 5.6 alpha 1版於2014年1月發佈。隨機產生了第一個由國人(鳥哥,惠新宸)參與主研的性能大規模提升版本PHPNG(PHP next generation,下一代PHP),2015年基於PHPNG接着就產生PHP 7版本。PHP7帶來了革命性的性能提高,其運行速率是5.6的兩倍還高以及其他改善,比如64位支持、類型申明、運行時優化等。從2015年開始官方就一直推薦大家儘快升級到php7,雖然當時擴展支持還是很成問題。

根據最新的W3techs統計,目前PHP 7大概佔了超過16.6%的PHP份額。 總體上PHP仍然擁有大約83%的網站服務器端開發語言的絕大多數比例。

根據PHP開發支持週期,到今年12月31日後,PHP 5.6不在有官方支持。所以現在只剩下半年時間你升級你的PHP到PHP7。此後PHP5的命運就會終結,而且就蟲蟲所致目前基本上絕大多數的框架和程序都已經完美的支持PHP7了。

性能測試:PHP 7.3比PHP 7.0快25%

有很多性能測試對比都揭示了PHP 7比PHP 5.6快至少2倍。下面是各大php框架心性能對比圖:


下面最新Phoronix基準測試結果則顯示了自PHP7發佈以來PHP 7的性能對比情況。最新版本的PHP 7.3 Alpha比以初始版本的PHP 7在系能上的改善的也是相當客觀的。根據最新數據PHP 7.3是比PHP 5.6快3倍!比PHP 7.0快25%。不說別的光這性能對比圖就能給烈日炎炎的夏日帶來絲絲涼意。而且這還可以直接體現在費用上,比如升級PHP7後,Badoo大概每年可減少100w美刀。

Badoo公司的數據:

PHP 7兼容行檢查

截止目前基本上絕大多數的PHP都可以完美的支持PHP7.0了。但是可能你恰好有一些歷史遺留的腳本和程序,那麼也好辦,社區已經有好多的工具做兼容性檢查,甚至給出直接的代碼轉譯,以下是幾個值得推薦的工具:

php7cc:一個很不錯的工具,不過目前已經不再更新了。(github地址: /sstalle/php7cc)

 

php7mar:PHP 7遷移助手,蟲蟲強烈推薦的工具。 (github地址:/Alexia/php7mar)

 

使用方法:

php mar.php -f="/path/to/project/root/" -r="/path/to/output/"

phan:PHP腳本的靜態分析器。 可以做當做php 7的語法檢查器。(github地址:/phan/phan)

 

使用方法:phan --project-root-directory --progress-bar -o phan.out

phpstan - PHP靜態分析和兼容性檢查工具。(github地址:/phpstan/phpstan)

PHP 7性能設置要點

1. Opcache

首先,確保已經啓用了OpCache。可以通過主配置文件php.ini或它獨特的配置文件opcache.ini文件(例如/etc/php/7.2/fpm/conf.d/10-opcache.ini)。來進行設置。

zend_extension=opcache.so

opcache.enable=1

opcache.enable_cli=1

可以使用phpinfo()檢查,也可以通過終端命令

php -v or php -i | grep opcache.enable

確認PHP OpCache已啓用後,很多的ln(a)mp套件都有一個opCache監控腳本,可以對其系能進行實時監控,如下圖

 

2、設置合適的realpath_cache_size

通過設置合宜的realpath_cache_size值可以改善你服務器的併發:

realpath_cache_size = 256k

realpath_cache_ttl = 300

 

3、禁止mysqlnd.collect_statistics

mysqlnd.collect_statistics = Off

mysqlnd.collect_memory_statistics = Off

線上服務器選擇禁止這兩個選項,可以減少不必要的數據庫訪問。如果需要相關統計,可以使用MySQL工具或者監控。

4、使用新的編譯器

GCC 4.8編譯器下編譯時PHP才能開啓Global Register for opline and execute_data支持, 這個會帶來5%左右的性能提升。

5、開啓Transparent HugePage (透傳大頁)

內存默認是以4KB分頁的,而虛擬地址和內存地址需要轉換,轉化時候需要進行搜索,爲了加速轉換過程,可以通過內存TLB(Translation Lookaside Buffer)來。所以通過啓用大內存頁可以增加TLB 緩存命中,從而提高性能。

設置系統支持:

sysctl vm.nr_hugepages=512

php.ini 增加支持

opcache.huge_code_pages=1

關於這個值,很多實踐後發現啓用透傳大頁面後會帶來系統負載過高,cpu佔用過高問題,這時候通過關閉就可以解決。所以這個參數需要實際情況斟酌測試使用。

6、開啓PGO

PHP是專門爲一個項目服務,比如一個 Wordpress或者drupal站點,就可以使用PGO提高性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章