**自 laruence:php7 已經發布了,作為 php 10年來最大的版本公升級,最大的效能公升級,php7 在多放的測試中都表現出很明顯的效能提公升,然而,為了讓它能發揮出最大的效能,我還是有幾件事想提醒下。
記得啟用 zend opcache,因為 php7 即使不啟用 opcache 速度也比 php-5.6 啟用了 opcache 快,所以之前測試時期就發生了有人一直沒有啟用 opcache 的事情。啟用 opcache 非常簡單,在 php.ini 配置檔案中加入:
zend_extension=opcache.so2. 使用新的編譯器opcache.enable=1
opcache.enable_cli=1
"
使用新一點的編譯器,推薦 gcc 4.8 以上,因為只有 gcc 4.8 以上 php 才會開啟 global register for opline and execute_data 支援。這個會帶來 5% 左右的效能提公升(wordpres 的 qps 角度衡量)。
其實 gcc 4.8 以前的版本也支援,但是我們發現它支援的有bug,所以必須是 4.8 以上的版本才會開啟這個特性。
3. hugepage
我之前的文章也介紹過:讓你的php7更快之hugepage,首先在系統中開啟 hugepages,然後開啟 opcache 的 huge_code_pages。
以我的 centos 6.5 為例,通過:
$sudo sysctl vm.nr_hugepages=512分配 512 個預留的大頁記憶體:
$ cat /proc/meminfo | grep然後在 php.ini 中加入:huge
anonhugepages:
106496
kbhugepages_total:
512hugepages_free:
504hugepages_rsvd:
27hugepages_surp:
0hugepagesize:
2048 kb
opcache.huge_code_pages=1這樣一來,php 會把自身的 text 段,以及記憶體分配中的 huge 都採用大記憶體頁來儲存,減少 tlb miss,從而提高效能。
4. opcache file cache
開啟 opcache file cache(實驗性),通過開啟這個,我們可以讓 opcache 把 opcode 快取快取到外部檔案中,對於一些指令碼,會有很明顯的效能提公升。
在 php.ini 中加入:
opcache.file_cache=/tmp這樣 php 就會在 /tmp 目錄下 cache 一些 opcode 的二進位制導出檔案,可以跨 php 生命週期存在。
5. pgo
我之前的文章:讓你的php7更快(gcc pgo) 也介紹過,如果你的 php 是專門為乙個專案服務,比如只是為你的 wordpress,或者 drupal,或者其他什麼,那麼你就可以嘗試通過 pgo,來提公升 php,專門為你的這個專案提高效能。
具體的,以 wordpress 4.1 為優化場景,首先在編譯php的時候首先:
$ make prof-gen然後用你的專案訓練 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這個時候你編譯得到的 php7 就是為你的專案量身打造的最高效能的編譯版本。$ make prof-use && make
install
讓PHP7達到最高效能的幾個Tips
php7已經發布了,作為php10年來最大的版本公升級,最大的效能公升級,php7在多放的測試中都表現出很明顯的效能提公升,然而,為了讓它能發揮出最大的效能,我還是有幾件事想提醒下.php7 vs php5.6 記得啟用zend opcache,因為php7即使不啟用opcache速度也比php 5...
讓PHP7達到最高效能的幾個Tips
php7 vs php5.6 記得啟用zend opcache,因為php7即使不啟用opcache速度也比php 5.6啟用了opcache快,所以之前測試時期就發生了有人一直沒有啟用opcache的事情.啟用opcache非常簡單,在php.ini配置檔案中加入 zend extension o...
讓PHP7達到最高效能的幾個Tips
php7已經發布了,作為php10年來最大的版本公升級,最大的效能公升級,php7在多放的測試中都表現出很明顯的效能提公升,然而,為了讓它能發揮出最大的效能,我還是有幾件事想提醒下.php7 vs php5.6 記得啟用zend opcache,因為php7即使不啟用opcache速度也比php 5...