1. 92OWLHome
  2. 超文本
  3. 網管筆記

Opcache Control Panel 配置參數 中文版

Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 開發的一款閉源但可以免費使用的 PHP 優化加速組件。 Optimizer+ 將PHP代碼預編譯生成的腳本文件 Opcode 緩存在共享內存中供以後反復使用,從而避免了從磁盤讀取代碼再次編譯的時間消耗。同時優化了代碼,從而加速PHP的執行。

Opcache 的運作方式:

正常的php的執行過程如下:

request請求(nginx,apache,cli等)➤ Zend引擎讀取.php文件 ➤ 掃描其詞典和表達式 ➤ 解析文件 ➤ 創建要執行的計算機代碼(稱為Opcode) ➤ 最後執行Opcode ➤ response 返回

每一次請求PHP腳本都會執行一遍以上步驟,如果PHP源代碼沒有變化,那麼Opcode也不會變化,顯然沒有必要每次都重行生成Opcode,結合在Web中無所不在的緩存機制,我們可以把Opcode緩存下來,以後直接訪問緩存的Opcode豈不是更快。

啓用Opcode緩存之後的流程圖如下:

request請求(nginx,apache,cli等)➤ Zend引擎讀取.php文件 ➤ 讀取Opcode ➤ 執行Opcode ➤ response 返回

以上opcache 運作原理,轉載於:opcache参数配置优化详解

OPcache 配置參數中文版如下:

本OPcache 配置參數中文版,原文: 升级到 PHP 5.5.x + opcache

#OPcache 配置參數中文版如下...
#(中文和英文同樣讓人難懂,兩種語言文檔都啃過了,基本才會瞭解...):

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 #(默認值:0xffffffff)
#一個位掩碼,其中每個位允許或禁用相應的緩存通過.

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」 錯誤.

備註:

Optimizer+ 於 2013年3月中旬改名為 Opcache。
並且在 PHP License 下開源: https://github.com/zendtech/ZendOptimizerPlus

聲明:本站原創文章由 OWL 撰寫,採用 BY-NC-SA 創作共用協議,轉載時請以連結形式標明本文地址.

轉載請注明來源: Opcache Control Panel 配置參數 中文版 - https://92owl.com/837/opcache-control-panel-pei-zhi-can-shu-zhong-wen.html