[CentOS 7] 快還要更快,讓 PHP 7 運行更加神速

by 2月 02, 2016 0 意見            

PHP 7 比 5.x 快上很多,即使只有單純的版本升級就已經很有感,不過大家還是希望它變得越來越快,這時再做些小調整就會更有 fu,Let's try it!!!

事前準備


說到 PHP 7,那一定跑不了 LAMP 或是 LEMP,請先準備好底層服務的安裝。

以前我們要讓 PHP 加快處理速度,通常會配合 APCeAcceleratorXCache 的任一個來使用;現在忘了它們吧,就從現在起開始改用 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。
PORT="11211"
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) 都有大幅改善。


參考資料


圖片來源

  • https://pixabay.com/

更新紀錄

  • 2016/02/02 撰文。

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

0 意見 :

張貼留言