opcache是php內置得一個加速模塊,php解析PHP文件得時候,若是發現該文件對應得byte-code存儲再內存中,省去編譯過程直接執行內存中得文件。(提高性能10%) #/etc/php7/fpm/php.ini validate_timestamps=1 revalidate_freq=0 memory_consumption=64 max_accelerated_files=4000 opcache.fast_shutdown=0 validate_timestamps設置0,PHP 解析器只要發現內存中有對應 PHP 文件的 byte-code 內容就會加載.你更新了服務器得代碼後php並不會直接執行新得代碼。 假如 validate_timestamps 等於 1,PHP 解析器從內存中獲取某個 PHP 文件對應的byte-code,會經過必定的方法比較 byte-code 內容是否是最新的(讀取文件系統),假如比較後發現 byte-code 已通過期,應該從新編譯生成。 須要注意,PHP 解析器不是每次都會去檢查(一切爲了效率),檢查的頻率取決於 revalidate_freq 參數( 0 表示每次都檢查)。 memory_consumption 這個參數很好理解,表明這塊內存區開闢的大小,另外須要注意不一樣 PHP SAPI 內存區不是共享的, 就是說同一個 PHP 文件,運行在命令行模式或者 PHP-FPM 模式下,對應的 byte-code 會存儲在不一樣的內存區中。 max_accelerated_files 表示內存區最大能存儲的 PHP 文件數量。 validate_timestamps建議這個生產環境不開啓,開發環境開啓。 不開啓:就是不校驗php文件最近有沒有修改過,一直走byte-code中得代碼,主要是爲了生產環境得執行效率。下面是此時解決文件更新得方法 第一種方法就是調用 opcache_reset() 函數, 第二種重啓 PHP SPAI,好比運行service php5-fpm restart等。 可是上面兩種方式都太兇殘,假如開發的項目頻繁上線,每次緩存區都要所有清空,能夠使用opcache_invalidate()函數更新特定文件的緩存。