PHP開發小組背後的公司Zend近期開源了其旗下的PHP加速產品Zend Optimizer,新專案託管於Github專案名稱為ZendOptimizerPlus。今天我們就來談談ZendOpcache。
簡介
Zend Optimizer 透過opcode 的快取和最佳化來提速PHP 的執行.它透過在共享記憶體中儲存預編譯的PHP腳本來提高PHP的效能。這一操作消除了從磁碟讀取PHP檔案然後編譯的過程.此外, 另外它還提供了少量的字節碼最佳化模式使得程式碼執行更快.
適用性
目前版本的Zend Optimizer 適用於PHP 5.2.*, 5.3.*, 5.4.* 以及PHP-5.5 開發版分支. 將來或許會取消對PHP 5.2的支援.
安裝
首先下載Zend Optimizer 的原始碼:
http://pecl.php.net/package/ZendOpcache
目前, 我使用的是7.0.1 的beta 版, 下載後解壓縮, 編譯:
wget http://pecl.php.net/get/zendopcache-7.0.1.tgz tar xzf zendopcache-7.0.1.tgz cd zendopcache-7.0.1 phpize ./configure --with-php-config=/path_to_php_bin/php-config make make install
配置編輯php.ini
zend_extension=/...full_path.../opcache.so #以下是开发组推荐配置 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 cgi 或Apache.
設定參數詳解
-
opcache.enable(預設值:1)
Zend Optimizer 的開關, 關閉時程式碼不再最佳化.
-
opcache.memory_consumption(預設值:64)
Zend Optimizer 共享記憶體的大小, 總共能夠儲存多少預編譯的PHP 程式碼(單位: MB).
-
opcache.interned_strings_buffer(預設值:4)
Zend Optimizer 中interned字串的佔記憶體總量.(單位:MB)
-
opcache.max_accelerated_files(預設值:2000)
Zend Optimizer 哈希表中鍵數量的最大值(一個腳本文件應當是對應一個key的,所以應當就是允許緩存的文件最大數量).這個值實際上是素數列表{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 }中第一個大於設定值的數字.值設定範圍: 200 – 100000
-
opcache.max_wasted_percentage(預設值:5)
“浪費」的記憶體達到此值對應的百分比,就會發起一個重啟調度.
-
#opcache.use_cwd(預設值:1)
#開啟這條指令, Zend Optimizer 會自動將目前工作目錄的名字追加到腳本鍵上, 以此消除同名文件間的鍵值命名衝突.關閉這條指令會提升效能,但是會對已存在的應用程式造成破壞.
-
opcache.validate_timestamps(預設值:1)
停用時, 您必須手動重置Zend Optimizer 或重新啟動Web伺服器,以使檔案系統的變更生效. 檢查的頻率是由指令「opcache.revalidate_freq」控制.
-
opcache.revalidate_freq(預設值:2)
多久(以秒為單位)檢查檔案時間戳以改變共享記憶體的分配.」1″ 表示一秒校驗一次, 但是是每個請求一次. “0″ 表示總是在校驗.
-
opcache.revalidate_path(預設值:0)
#允許或禁止在include_path 中進行檔案搜尋的最佳化. 如果檔案搜尋被停用而且可以在相同的include_path 中找到這個緩存的文件, 文件搜索就不會再進行下去了. 因此,如果include_path 其它地方有一個同名文件的話, 那就找不到了. 如果這個優化對您的應用程序有影響,那麼應當允許它搜尋.預設情況下,指令是禁止的,這就意味著,優化是處於啟動狀態的.
-
##opcache.save_comments(預設值:1)
如果禁用,所有的文檔註解都從程式碼中剔除以此減少優化過的程式碼的大小.停用「文件註解」 可能會破壞一些現有的應用程式和框架(例如: Doctrine, ZF2, PHPUnit). -
#opcache.load_comments(預設值:1)
如果停用, PHP文件註解將不會從SHM(共享記憶體) 中讀取. 儘管」文件註解」還是會被儲存(save_comments=1), 但是那些無論如何都用不上的註解就不必被應用讀取了. -
opcache.fast_shutdown(預設值:0)
#如果開啟, 一個快速關閉佇列用以提速程式碼.快速關閉佇列並不釋放每個已指派的區塊, 而是讓Zend 引擎記憶體管理器來幹這個活. -
opcache.enable_file_override(預設值:0)
#允許覆蓋文件存在(file_exists等)的最佳化特性。 -
opcache.optimization_level(預設值:0xffffffffff)
一個位元遮罩,其中每個位元允許或停用對應的快取通過. -
opcache.inherited_hack(預設值:1)
啟用此Hack可以暫時性的解決”can't redeclare class”錯誤.Zend Optimizer 存儲著DECLARE_CLASS 操作碼使用繼承的地方(這些是唯一可以被PHP執行的操作碼,但是也可能因為優化引起的父類別找不到而無法執行).當檔案被讀取時, Optimizer 會試著透過目前環境綁定被繼承的類別. 這樣做的問題是. DECLARE_CLASS 的操作碼可能不被目前腳本所需要, 如果腳本需要操作碼至少完成類別的定義操作, 那麼它就會無法執行.這指令的預設是禁用的, 這就表示優化是有效的. 該在php 5.3 以及以上的版中不再被需要, 而且這個設定也不會生效.
-
opcache.dups_fix(預設值:0)
啟用此Hack可以暫時性的解決」can' t redeclare class」錯誤.
-
opcache.blacklist_filename(預設值:無)
Zend Optimizer 黑名單檔案的位置.
Zend Optimizer 黑名單是一個文字檔案包含了那些不能被加速的檔案名稱.檔案格式為每行一個檔案名稱.檔案名稱須為一個完整的路徑或是緊緊一個檔案前綴(如:/var/www/x封鎖了/var/www 檔案和目錄中所有以'x' 開始的檔案或目錄). 需要封鎖的檔案通常符合下面三個原因中的一個:
1) 目錄包含了自動產生的程式碼, 如Smarty 或ZFW 的快取.
2) 執行加速時程式碼無法很好的運行, 從而耽誤了編譯時評估.
3) 程式碼觸發了一個Zend Optimizer 的Bug -
#opcache.max_file_size(預設值:0)
透過檔案大小屏除大檔案的快取.預設情況下所有的檔案都會被快取.
-
#opcache.consistency_checks(預設值:0)
每N 次請求檢查一次快取校驗.預設值0表示檢查被停用了.由於計算校驗值有損性能,這個指令要緊緊在開發調試的時候開啟.
-
#opcache.force_restart_timeout(預設值:180)
從快取不被存取後,等待多久後(單位為秒)調度重啟.Zend Optimizer 依託此指令來確定一個進程可能在處理過程中出現問題的情況.這段時間(等待時間)過後, 假設Zend Optimizer 發生了一些問題, 並開始幹掉那些仍然持有預防重啟鎖的進程.當這些發生時, 如果日誌的級別是3級或以上, 一個“killed locker” 的錯誤就會被記錄到Apache 的日誌中.
-
opcache.error_log(預設值:無)
Zend Optimizer 的錯誤日誌檔名.留空表示使用標準錯誤輸出(stderr).
-
opcache.log_verbosity_level(預設值:1)
將錯誤訊息都導向Web 伺服器日誌.預設的只有致命錯誤(level 0 ) 或錯誤(level 1)才會被記錄.你也可以允許警告(level 2),提示訊息(level 3) 或偵錯訊息(level 4)被記錄下來.
-
opcache.preferred_memory_model(預設值:無)
記憶體共享的首選後台.留空則是讓系統選擇.
-
opcache.protect_memory(預設值:0)
防止共享內存在腳本執行期間被意外寫入, 僅用於內部偵錯.
-
opcache.mmap_base(預設值:無)
共享記憶體段映射基礎(僅適用於Windows).所有的PHP程序必須對應到相同的共享記憶體位址空間.此指令用於手動修復“Unable to reattach to base address” 錯誤.
#推薦學習:php影片教學
以上是如何安裝配置ZendOpcache的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),