首頁 >後端開發 >PHP7 >如何安裝配置ZendOpcache

如何安裝配置ZendOpcache

醉折花枝作酒筹
醉折花枝作酒筹轉載
2021-07-23 09:17:311887瀏覽

PHP開發小組背後的公司Zend近期開源了其旗下的PHP加速產品Zend Optimizer,新專案託管於Github專案名稱為ZendOptimizerPlus。今天我們就來談談ZendOpcache。

如何安裝配置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中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除