PHP 5.5.0 及後續版本中已經綁定了 OPcache 擴充,隻需要在編譯安裝的時候, 如果你使用--disable-all參數 禁用了預設擴充的建構, 那麼必須使用--enable-opcache選項來開啟 OPcache。
編譯之後,就可以使用zend_extension指令來将 OPcache 擴充加載到 PHP 中。在非 Windows 平台使用zend_extension= path/opcache.so, Windows 平台使用zend_extension=path/php_opcache.dll。
在PHP.ini添加或者修改 如下代碼
[Zend Opcache]
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
opcache.memory_consumption=64
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.force_restart_timeout=180
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
對于上面opcache的各項選項介紹,請參考:http://www.php.net/manual/zh/opcache.configuration.php
重新開機php,通過 phpinfo(); 指令檢視
php.ini_opcache_extension
在phpinfo()資訊中, 目前來看有兩條資訊猶為重要:
Cache hits (進階緩存命中)
Cache misses (進階緩存未命中)
在這兩條資訊中即可觀察緩存運作情況, 一目了然
高速緩存帶來哪些優化呢? 對代碼運作有多大幫助?
我們做個測試, 驗證一下什麼是opcache.
<?php
echo 'opcache';
?>
這是一段非常簡單的php代碼, 請儲存為demo.php檔案然後通路, 随意重新整理, Cache hits數值會不停地增加, 說明起作用了,
然後你修改代碼為:
<?php
echo 'cache new';
?>
再重新整理demo.php, 應該可以看到效果, 列印出來的值仍然是opcache, 即源碼被緩存了, 它不再解析demo.php檔案, 試着不停地重新整理, 檢測多少秒後才更新.
可設定: opcache.force_restart_timeout=180 的時間來控制更新速度.
這就類似于web項目中的靜态檔案緩存一下, 比如我們加載一個網頁, 浏覽器會自動幫我們把jpg, css緩存起來, 唯獨php沒有緩存, 每次均需要open檔案, 解析代碼,
沒有無緣無故的榮耀