php opcache 详解
生活随笔
收集整理的這篇文章主要介紹了
php opcache 详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PHP性能提升之OPcache相關參數詳解
工具?memory 發布于December 15, 2016 標簽:?PHPOPcache 通過將?PHP?腳本預編譯的字節碼存儲到共享內存中來提升 PHP 的性能, 存儲預編譯字節碼的好處就是 省去了每次加載和解析 PHP 腳本的開銷。
PHP 5.5.0 及后續版本中已經綁定了 OPcache 擴展。 對于 PHP 5.2,5.3 和 5.4 版本可以使用 ? PECL 擴展中的 OPcache 庫。
安裝
php5.5及以后的版本在編譯時加上
--enable-opcache選項來開啟 OPcache。
PHP 5.2, 5.3 和 5.4 版本則需要編譯pecl擴展
從?http://pecl.php.net/package/ZendOpcache?下載
大概如下:
配置指令的簡短說明
- opcache.enable boolean 啟用操作碼緩存。如果禁用此選項,則不會優化和緩存代碼
- opcache.enable_cli boolean 僅針對 CLI 版本的 PHP 啟用操作碼緩存
- opcache.memory_consumption integer OPcache 的共享內存大小,以兆字節為單位
- opcache.interned_strings_buffer integer 用來存儲臨時字符串的內存大小,以兆字節為單位
- opcache.max_accelerated_files integer OPcache 哈希表中可存儲的腳本文件數量上限 設置值取值范圍最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。
- opcache.max_wasted_percentage integer 浪費內存的上限,以百分比計。 如果達到此上限,那么 OPcache 將產生重新啟動續發事件。
- opcache.use_cwd boolean 如果啟用,OPcache 將在哈希表的腳本鍵之后附加改腳本的工作目錄, 以避免同名腳本沖突的問題。 禁用此選項可以提高性能,但是可能會導致應用崩潰。
- 比如,兩個腳本名稱一樣..不使用此項,可能導致 兩個腳本錯亂!!!
- opcache.validate_timestamps boolean 如果啟用,那么 OPcache 會每隔 opcache.revalidate_freq 設定的秒數 檢查腳本是否更新。 如果禁用此選項,你必須使用 opcache_reset() 或者 opcache_invalidate() 函數來手動重置 OPcache,也可以 通過重啟 Web?服務器來使文件系統更改生效。
- opcache.revalidate_freq integer 檢查腳本時間戳是否有更新的周期,以秒為單位。 設置為 0 會導致針對每個請求, OPcache 都會檢查腳本更新。如果 opcache.validate_timestamps 配置指令設置為禁用,那么此設置項將會被忽略。
- opcache.revalidate_path boolean 如果禁用此選項,在同一個 include_path 已存在的緩存文件會被重用
- opcache.save_comments boolean 如果禁用,腳本文件中的注釋內容將不會被包含到操作碼緩存文件, 這樣可以有效減小優化后的文件體積,但會導致某些框架不可用
- opcache.load_comments boolean 如果禁用,則即使文件中包含注釋,也不會加載這些注釋內容。 本選項可以和 opcache.save_comments 一起使用,以實現按需加載注釋內容。
- opcache.fast_shutdown boolean 如果啟用,則會使用快速停止續發事件。
- opcache.enable_file_override boolean 如果啟用,則在調用函數 file_exists(), is_file() 以及 is_readable() 的時候, 都會檢查操作碼緩存,無論文件是否已經被緩存。 如果應用中包含檢查 PHP 腳本存在性和可讀性的功能,這樣可以提升性能。 但是如果禁用了 opcache.validate_timestamps 選項, 可能存在返回過時數據的風險。
- opcache.optimization_level integer 控制優化級別的二進制位掩碼。
- opcache.inherited_hack boolean 在 PHP 5.3 之前的版本,OPcache 會存儲代碼中使用 DECLARE_CLASS 操作碼 來實現繼承的位置。當文件被加載之后,OPcache 會嘗試使用當前環境來綁定被繼承的類。 由于當前腳本中可能并不需要 DECLARE_CLASS 操作碼,如果這樣的腳本需要對應的操作碼被定義時, 可能無法運行。 在 PHP 5.3 及后續版本中,此配置指令會被忽略。
- opcache.dups_fix boolean 僅作為針對 “不可重定義類”錯誤的一種解決方案。
- opcache.blacklist_filename string OPcache 黑名單文件位置。 黑名單文件為文本文件,包含了不進行預編譯優化的文件名,每行一個文件名。 黑名單中的文件名可以使用通配符,也可以使用前綴。 此文件中以分號(;)開頭的行將被視為注釋。?
例如:
- opcache.max_file_size integer 以字節為單位的緩存的文件大小上限。設置為 0 表示緩存全部文件。
- opcache.consistency_checks integer 如果是非 0 值,OPcache 將會每隔 N 次請求檢查緩存校驗和
- opcache.force_restart_timeout integer 如果緩存處于非激活狀態,等待多少秒之后計劃重啟。 如果超出了設定時間,則 OPcache 模塊將殺除持有緩存鎖的進程, 并進行重啟。
- opcache.error_log string OPcache 模塊的錯誤日志文件。
- opcache.log_verbosity_level integer OPcache 模塊的日志級別。
- opcache.preferred_memory_model string OPcache 首選的內存模塊。可選值包括: mmap,shm, posix 以及 win32。
- opcache.protect_memory boolean 保護共享內存,以避免執行腳本時發生非預期的寫入
- opcache.mmap_base string 在?Windows?平臺上共享內存段的基地址。
- opcache.restrict_api string 僅允許路徑是以指定字符串開始的 PHP 腳本調用 OPcache API 函數。
轉載于:https://www.cnblogs.com/whm-blog/p/10103203.html
總結
以上是生活随笔為你收集整理的php opcache 详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泛微OA系统Ngnix反向代理
- 下一篇: 通过福禄克测试仪进行数据中心机房各个区域