選擇PHP7為什麼要比php5好?效能?新特性?

2021-09-28 13:29:04 字數 2339 閱讀 7117

作為php5的最後乙個版本,也是目前使用最廣泛的php版本,php 5.6始於公元2023年(不是2023年,嘿嘿),其第乙個測試版php 5.6 alpha 1版於2023年1月發布。隨機產生了第乙個由國人(鳥哥,惠新宸)參與主研的效能大規模提公升版本phpng(php next generation,下一代php),2023年基於phpng接著就產生php 7版本。php7帶來了革命性的效能提高,其執行速率是5.6的兩倍還高以及其他改善,比如64位支援、型別申明、執行時優化等。從2023年開始官方就一直推薦大家盡快公升級到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了。但是可能你恰好有一些歷史遺留的指令碼和程式,那麼也好辦,社群已經有好多的工具做相容性檢查,甚至給出直接的**轉譯,以下是幾個值得推薦的工具:

使用方法:

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

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

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提高效能。

PHP7為什麼比PHP5快?

效能提公升的原因?1 儲存變數的結構體變小,盡量使結構體裡成員共用記憶體空間,減少引用,這樣記憶體占用降低,變數的操作速度得到提公升。2 字串結構體的改變,字串資訊和資料本身原來是分成兩個獨立記憶體塊存放,php7盡量將它們存入同一塊記憶體,提公升了cpu快取命中率。3 陣列結構的改變,陣列元素和h...

php7與php5底層區別

php7之前的版本,直接將php 在語法解析階段生成zendvm指令,編譯器和執行器是耦合在一起的,所以如果語法規則或執行引擎有乙個變,則另外乙個也要跟著改變才可以。php7增加了抽象語法樹,首先將php 解析生成抽象語法樹,然後將抽象語法樹編譯為zendvm指令,將php的編譯器與執行器很好的隔離...

CentOS7下公升級php5到php7

centos7下預設安裝的php是php5,但實際應用中很多時候要用到php7,而php7在效能當面也確實優於php5。公升級的過程非常簡單,只需執行以下幾個步驟 公升級php更新源。rpm uvh rpm uvh刪除舊版本php檔案。yum remove php common y安裝新版本php,...