編譯安裝 Zend Opcache 緩存Opcache,加速 PHP

Optimizer+ 是 Zend 開發的閉源但能夠無償使用的 PHP 優化加速組件,是第一個也是最快的 opcode 緩存工具。如今,Zend 科技公司將 Optimizer+ 在 PHP License 下開源成爲 Zend Opcache。php

GitHub地址https://github.com/zendtech/ZendOptimizerPlusgit

Zend OPcache 經過 opcode 緩存和優化提供更快的 PHP 執行過程。它將預編譯的腳本文件存儲在共享內存中供之後使用,從而避免了從磁盤讀取代碼並進行編譯的時間消耗。同時,它還應用了一些代碼優化模式,使得代碼執行更快。github

 

1、什麼是 opcode 緩存?數據庫

當解釋器完成對腳本代碼的分析後,便將它們生成能夠直接運行的中間代碼,也稱爲操做碼(Operate Code,opcode)。Opcode cache 的目地是避免重複編譯,減小 CPU 和內存開銷。若是動態內容的性能瓶頸不在於 CPU 和內存,而在於 I/O 操做,好比數據庫查詢帶來的磁盤 I/O 開銷,那麼 opcode cache 的性能提高是很是有限的。可是既然 opcode cache 能帶來 CPU 和內存開銷的下降,這總歸是好事 —— 本着環保的態度,也應該儘可能減小消耗不是? :D緩存

現代操做碼緩存器(Optimizer+,APC2.0+,其餘)使用共享內存進行存儲,而且能夠直接從中執行文件,而不用在執行前「反序列化」代碼。這將帶來顯着的性能加速,一般下降了總體服務器的內存消耗,並且不多有缺點。bash

 

2、Optimizer+ 與 APC 的優缺點對比服務器

Optimizer+ 於 2013年3月中旬更名爲 Opcache。wordpress

根據 PHP wiki 上的討論,Zend Opcache 即將整合到 php 5.5 中。做爲 APC 的競爭對手,新生的 Zend Opcache 頗有可能取代 APC 的位置,雖然 OptimizerPlus 沒有象 APC 那樣的 user cache 功能。函數

OPTIMIZER+ 相對 APC 的優勢php-fpm

一、性能。根據測試,Zend Optimizer+ 始終優於 APC。隨代碼差別,每秒鐘處理的請求數高 5~20%。Google doc 上記錄的測試結果中,WordPress 2.1.1(不知道爲何不用個新版本的 WP 來測試),性能提升約 8%。理論上來講,對於 WP 3.5.1,性能應該也能獲得大約 5~10% 的提高吧。對於運行 WordPress 的服務器而言,使用 Optimizer+ 能夠顯著下降 CPU 使用率和提升頁面加載速度(graphics here)。

二、支持新的 PHP 版本。Zend 和 PHP 社區都會幫助 Optimizer+ 可以支持最新版本的 PHP。

三、可靠性。Optimizer+ 擁有可選的損壞檢測能力,能夠防止因數據損壞而致使的服務器崩潰。

四、更好的兼容性。PHP 社區打算讓 Optimizer+ 與社區支持的全部 PHP 版本相兼容

APC 相對 OPTIMIZER+ 的優點

一、APC 有數據緩存 API,而 Optimizer+ 沒有。

二、APC 可以回收舊的無效的腳本佔用的內存。APC 有內存管理器,能夠將那些再也不使用的腳本關聯的內存進行回收。而 Optimizer+ 不一樣,它將這樣的內存標記爲「髒的」,但並不會回收它們。一旦「髒的」內存佔用配置閾值的百分比達到必定值,Optimizer+ 就將本身從新啓動。這種行爲在穩定性上既有優點也有劣勢。

 

3、編譯安裝 Zend Opcache

如今已經可使用 Zend Opcache 替代 APC 做爲 PHP 優化加速工具了。目前的 Zend Opcode 兼容 PHP 5.2.*、5.3.*、5.4.* 和 PHP-5.5 開發版。不過,未來會取消對 PHP 5.2 的支持。

注意:Zend Opcache 與 eaccelerator 相沖突。要安裝 Zend Opcache,可能須要先卸載 eaccelerator —— 若是你用了這個加速模塊的話。

編譯安裝 Zend Opcache

#下載源代碼 (wget -c 代碼地址)

https://github.com/zendtech/ZendOptimizerPlus/archive/master.zip

#切換解壓後的源碼目錄,利用phpize執行安裝

cd /usr/local/src/ZendOptimizerPlus-master
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

#編輯 php.ini,追加以下內容:

zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

#重啓php-fpm

service php-fpm restart

opcache相關參數,可參考:

GitHubhttps://github.com/zendtech/ZendOptimizerPlus

上述github頁面中,有個推薦配置:

We recommend the following configuration options for best performance
in a production environment.

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

PHP手冊http://php.net/manual/zh/opcache.configuration.php

 

4、查看 Zend Opcache 運行狀態

經過 phpinfo(); 函數,可查看 opcache 運行狀態:

注意:Used memory、Free memory 的單位是 字節

相關文章
相關標籤/搜索