天天看點

linux 下面 opcache 拓展

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檔案, 解析代碼, 

沒有無緣無故的榮耀