PHP 7 比 5.x 快上很多,即使只有單純的版本升級就已經很有感,不過大家還是希望它變得越來越快,這時再做些小調整就會更有 fu,Let's try it!!!
事前準備
說到 PHP 7,那一定跑不了 LAMP 或是 LEMP,請先準備好底層服務的安裝。
以前我們要讓 PHP 加快處理速度,通常會配合 APC、eAccelerator、XCache 的任一個來使用;現在忘了它們吧,就從現在起開始改用 OPcache 來實作,它是 PHP 7 開發者之一的 惠新宸 協力開發的 PHP 支援模組。
這次實作以 LEMP 架構為主,套件庫是用 Remi 的版本,別忘了要依各位實際的環境來修改路徑及設定值。
開始設定
安裝 OPcache 套件。
sudo yum -y install php70-php-opcache
編輯主設定檔。
sudo vi /etc/opt/remi/php70/php.ini
加上這些參數。
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.file_cache=/home/opcache
opcache.huge_code_pages=1
啟動 Huge Pages,它是一種大型暫存分頁機制,詳細說明請參閱 The Linux Kernel Archives - Huge Pages,在我的機器上測試結果改到 512 就夠了。
sudo sysctl -w vm.nr_hugepages=512
建立 OPcache 專用目錄。
sudo mkdir /home/opcache
sudo chown nginx:nginx /home/opcache
重新啟動 PHP-FPM,這邊就會看到 OPcache 已經啟動了。
sudo systemctl restart php70-php-fpm
另外,
我們還可以加裝 memcached,顧名思義它就是使用記憶體來當快取,加速系統的運作。
sudo yum -y install memcached
編輯主程式檔。
sudo vi /etc/sysconfig/memcached
參數不多,請依需求修改。
- PORT - 通訊埠,別忘了開防火牆。
- MAXCONN - 總連線數。
- CACHESIZE - 記憶體用量,單位是 KB。
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS=""
啟動 memcached,並讓它在開機後自動啟動。
sudo systemctl restart memcached
sudo systemctl enable memcached
開放防火牆
sudo firewall-cmd --permanent --zone=public --add-port=11211/tcp
再安裝 memcached for PHP 的支援模組。
sudo yum -y install php70-php-pecl-memcached
重新啟動 PHP-FPM。
sudo systemctl restart php70-php-fpm
最後看一下 phpinfo(); 函數的顯示結果,出現 memcached 的段落就代表成功了。
實測結果
這邊直接引用對岸的網友的資料,在 OneAPM - 使用 PHP 7 给 Web 应用加速 這篇文章裡
,他測試了 Wordpress 4.1.1、Drupal 8、phpBB 3.1.3、MediaWiki 1.24.1、Opencart 2.0.2.0、WardrobeCMS 1.2.0、Geeklog 2.1.0、Magento 1.9.1.1、Traq 3.5.2、Cachet、Moodle 2.9-dev、ZenCart 1.5.4 等 12 種套件的比較結果。
以 Wordpress 4.1.1 為例,我們可以看到 PHP 7 比起 5.3 ~ 5.6 的讀取速度 (Read) 及延遲時間 (Latency) 都有大幅改善。
參考資料
- 风雪之隅 - 让你的PHP7更快之Hugepage
- 风雪之隅 - 让PHP7达到最高性能的几个Tips
- OneAPM - 使用 PHP 7 给 Web 应用加速
- liquidweb - How to Install Memcached on CentOS 7
圖片來源
- https://pixabay.com/
更新紀錄
- 2016/02/02 撰文。
0 意見 :
張貼留言