讓 PHP7 達到最高性能的幾個建議php
懶得排版了,伯樂在線連接:http://blog.jobbole.com/95657/api
原文出處: 惠新宸(@Laruence) 歡迎分享原創到伯樂頭條
PHP7 已經發布了,做爲PHP十年來最大的版本升級,最大的性能升級,PHP7在多放的測試中都表現出很明顯的性能提高,然而,爲了讓它能發揮出最大的性能,我仍是有幾件事想提醒下。緩存
PHP7 VS PHP5.6wordpress
Opcache性能
記得啓用Zend Opcache,由於PHP7即便不啓用Opcache速度也比PHP-5.6啓用了Opcache快,因此以前測試時期就發生了有人一直沒有啓用Opcache的事情。啓用Opcache很是簡單,在php.ini配置文件中加入:測試
1
2
3
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1"優化
使用新的編譯器ui
使用新一點的編譯器,推薦GCC 4.8以上,由於只有GCC 4.8以上PHP纔會開啓Global Register for opline and execute_data支持,這個會帶來5%左右的性能提高(Wordpres的QPS角度衡量)code
其實GCC 4.8之前的版本也支持,可是咱們發現它支持的有Bug,因此必須是4.8以上的版本纔會開啓這個特性。blog
HugePage
我以前的文章也介紹過: 讓你的PHP7更快之Hugepage ,首先在系統中開啓HugePages,而後開啓Opcache的huge_code_pages。
以個人CentOS 6.5爲例,經過:
1
$sudo sysctl vm.nr_hugepages=512
分配512個預留的大頁內存:
1
2
3
4
5
6
7
$ 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中加入:
1
opcache.huge_code_pages=1
這樣一來,PHP會把自身的text段,以及內存分配中的huge都採用大內存頁來保存,減小TLB miss,從而提升性能。
Opcache file cache
開啓Opcache File Cache(實驗性),經過開啓這個,咱們可讓Opcache把opcode緩存緩存到外部文件中,對於一些腳本,會有很明顯的性能提高。
在php.ini中加入:
1
opcache.file_cache=/tmp
這樣PHP就會在/tmp目錄下Cache一些Opcode的二進制導出文件,能夠跨PHP生命週期存在。
PGO
我以前的文章: 讓你的PHP7更快(GCC PGO) 也介紹過,若是你的PHP是專門爲一個項目服務,好比只是爲你的Wordpress,或者drupal,或者其餘什麼,那麼你就能夠嘗試經過PGO,來提高PHP,專門爲你的這個項目提升性能。
具體的,以wordpress 4.1爲優化場景。首先在編譯PHP的時候首先:
1
$ make prof-gen
而後用你的項目訓練PHP,好比對於Wordpress:
1
$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null
也就是讓php-cgi跑100遍wordpress的首頁,從而生成一些在這個過程當中的profile信息。
最後:
1
2
$ make prof-clean
$ make prof-use
這個時候你編譯獲得的PHP7,就是爲你的項目量身打造的最高性能的編譯版本。
暫時就這麼多吧,之後想起來再加,歡迎你們嘗試,thanks。