1. 程式人生 > >php啟用Opcache進行效能調優

php啟用Opcache進行效能調優

     php5.5以上版本已經內建了zend OpCache。通過配置zend opCache模組,將預編譯的php位元組碼載入到共存記憶體中,省去了每次載入php檔案和編譯php程式碼的開銷,可以極大提高php效能。

    opcache模組常用配置如下

#配置響應時間
sed -i 's/max_execution_time = 30/max_execution_time = 0/' /usr/local/php/lib/php.ini

#配置post大小
sed -i 's/post_max_size = 8M/post_max_size = 150M/' /usr/local/php/lib/php.ini

#配置上傳檔案大小
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 100M/' /usr/local/php/lib/php.ini

#設定錯誤輸出級別
sed -i 's:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT:error_reporting = E_ALL:' /usr/local/php/lib/php.ini

#啟用php效能優化

#啟用Zend Optimizer優化開關
sed -i 's:;opcache.enable=0:opcache.enable=1:' /usr/local/php/lib/php.ini

#共享記憶體的大小, 總共能夠儲存多少預編譯的 PHP 程式碼(單位:MB),推薦128M
sed -i 's:;opcache.memory_consumption=64:opcache.memory_consumption=128:' /usr/local/php/lib/php.ini

#暫存池中字串的佔記憶體總量.(單位:MB), 推薦 8
sed -i 's:;opcache.interned_strings_buffer=4:opcache.interned_strings_buffer=8:' /usr/local/php/lib/php.ini

#最大快取的檔案數目 200  到 100000 之間,推薦 4000
sed -i 's:;opcache.max_accelerated_files=2000:opcache.max_accelerated_files=4000:' /usr/local/php/lib/php.ini

#;記憶體“浪費”達到此值對應的百分比,就會發起一個重啟排程.
sed -i 's:;opcache.max_wasted_percentage=5:opcache.max_wasted_percentage=5:' /usr/local/php/lib/php.ini

#2s檢查一次檔案更新 注意:0是一直檢查不是關閉,推薦 60
sed -i 's:;opcache.revalidate_freq=2:opcache.revalidate_freq=2:' /usr/local/php/lib/php.ini

#是否儲存檔案/函式的註釋   如果apigen、Doctrine、 ZF2、 PHPUnit需要檔案註釋,推薦 0
sed -i 's:;opcache.save_comments=1:opcache.save_comments=0:' /usr/local/php/lib/php.ini


#開啟快速關閉, 開啟這個在PHP Request Shutdown的時候會收記憶體的速度會提高
sed -i 's:;opcache.fast_shutdown=0:opcache.fast_shutdown=1:' /usr/local/php/lib/php.ini

    opCache其他一些配置說明

#是否在CLI(即命令列時)啟用opcache
;opcache.enable_cli=0
#如果置為1,則將當前路徑加入到檔案key中,以避免可能產生的同文件名的檔案key衝突
;opcache.use_cwd=1
#開啟檔案時間戳驗證
;opcache.validate_timestamps=1#
#允許或禁止在 include_path 中進行檔案搜尋的優化
;opcache.revalidate_path=0
#允許覆蓋檔案存在(file_exists等)的優化特性
;opcache.enable_file_override=0
#定義啟動多少個優化過程
;opcache.optimization_level=0xffffffff
#啟用此Hack可以暫時性的解決”can’t redeclare class”錯誤.
;opcache.inherited_hack=1
#啟用此Hack可以暫時性的解決”can’t redeclare class”錯誤.
;opcache.dups_fix=0
#設定不快取的黑名單
;opcache.blacklist_filename=
#通過檔案大小屏除大檔案的快取.預設情況下所有的檔案都會被快取
;opcache.max_file_size=0
#由於計算校驗值有損效能,這個指令應當緊緊在開發除錯的時候開啟
.;opcache.consistency_checks=0
#從快取不被訪問後,等待多久後(單位為秒)排程重啟
;opcache.force_restart_timeout=180
#錯誤日誌檔名.留空表示使用標準錯誤輸出(stderr)
;opcache.error_log=
#將錯誤資訊寫入到伺服器(Apache等)日誌
;opcache.log_verbosity_level=1
#記憶體共享的首選後臺.留空則是讓系統選擇
;opcache.preferred_memory_model=
#防止共享記憶體在指令碼執行期間被意外寫入, 僅用於內部除錯.
;opcache.protect_memory=0
#僅允許路徑是以指定字串開始的 PHP 指令碼呼叫 OPcache API 函式。      預設值為空字串 "",表示不做限制。
;opcache.restrict_api=
#在 Windows 平臺上共享記憶體段的基地址。      所有的 PHP 程序都將共享記憶體對映到同樣的地址空間。      使用此配置指令避免“無法重新附加到基地址”的錯誤
;opcache.mmap_base=

;opcache.file_cache=

;opcache.file_cache_only=0

;opcache.file_cache_consistency_checks=1

;opcache.file_cache_fallback=1

;opcache.huge_code_pages=1

        php啟用opcache擴充套件

  • 編譯時php時新增–-enable-opcache

             預設opcache加速是關閉的,需要配置為啟用。

  • 在php.ini中配置啟用
       extension=opcache.so
  •  配置opcache引數

    #啟用Zend Optimizer優化開關
    opcache.enable=1
    
    #共享記憶體的大小, 總共能夠儲存多少預編譯的 PHP 程式碼(單位:MB),推薦128M
    opcache.memory_consumption=128
    
    #暫存池中字串的佔記憶體總量.(單位:MB), 推薦 8
    opcache.interned_strings_buffer=8
    
    #最大快取的檔案數目 200  到 100000 之間,推薦 4000
    opcache.max_accelerated_files=4000
    
    #;記憶體“浪費”達到此值對應的百分比,就會發起一個重啟排程.
    opcache.max_wasted_percentage=5
    
    #2s檢查一次檔案更新 注意:0是一直檢查不是關閉,推薦 60
    opcache.revalidate_freq=2
    
    #是否儲存檔案/函式的註釋   如果apigen、Doctrine、 ZF2、 PHPUnit需要檔案註釋,推薦 0
    opcache.save_comments=0
    
    #開啟快速關閉, 開啟這個在PHP Request Shutdown的時候會收記憶體的速度會提高
    opcache.fast_shutdown=1

       參考資料

  • http://php.net/manual/zh/opcache.configuration.php