關於opcode快取的概念可以參考鳥哥的文章:
目前為php提供opcode快取的擴充套件有很多,比如:zend opcache,xcache,eaccelerator,apc等等。
為什麼選擇opcache呢?
在該位址可以找到你的開發環境對應的opcache擴充套件:
將如下配置段加入到php.ini檔案中:
zend_extension = "h:/wamp/bin/php/php5.5.12/zend_ext/php_opcache.dll"
#以下配置為php文件中推薦的配置
opcache.enable=1
#是否開啟opcode快取
opcache.memory_consumption=128
#opcache 的共享記憶體大小,以兆位元組為單位
opcache.interned_strings_buffer=8
#用來儲存臨時字串的記憶體大小,以兆位元組為單位。 php 5.3.0 之前的版本會忽略此配置指令
opcache.max_accelerated_files=4000
#opcache 雜湊表中可儲存的指令碼檔案數量上限。
opcache.revalidate_freq=60
#檢查指令碼時間戳是否有更新的週期,以秒為單位。 設定為 0 會導致針對每個請求, opcache 都會檢查指令碼更新,這個配置在下文中會提到
opcache.fast_shutdown=1
#如果啟用,則會使用快速停止續發事件。 所謂快速停止續發事件是指依賴 zend 引擎的記憶體管理模組 一次釋放全部請求變數的記憶體,而不是依次釋放每乙個已分配的記憶體塊。(不太懂)
opcache.enable_cli=1
#opcache 的共享記憶體大小,以兆位元組為單位
詳細配置資訊參見php文件:
修改完ini檔案後重啟伺服器,列印phpinfo()資訊,如果看到如下截圖,就說明opcache安裝成功了。
上圖中的cache hits(快取命中率)對我們來說比較具有參考價值。
test2.php
$a = 'hello test';
echo
$a;
列印結果是hello test。現在修改一下檔案內容:
test2.php
$a = 'hello test2';
echo
$a;
列印結果依舊是hello test。說明該檔案已經經過了opcache快取。一直重新整理該頁面,注意觀察該值什麼時候發生了變化。同時注意phpinfo中快取命中率的資料是否一直在增加。再檢查一下opcache.revalidate_freq的配置引數,就可以看出在opcache.revalidate_freq配置時間段內php不會檢查該檔案是否有更新。
如果想清空opcode快取,可以使用opcache_reset函式,下面是乙個例子:
opcache_reset();
執行**後可以看到phpinfo中快取命中率的資料已經清零。
從前面的測試中,我們可以看出,要生成opcode快取的話,必須有使用者訪問該頁面才行,opcache為我們提供了一種不需要使用者訪問就能預先生成opcode快取的方法opcache_compile_file,下面是乙個例子:
test4.php
opcache_compile_file('test2.php');
現在我們如果檢查test2.php檔案是否已經儲存到opcode快取中去了呢?很簡單,使用opcache_is_script_cached函式即可,下面是乙個例子:
test3.php
var_dump(opcache_is_script_cached('test2.php'));
die();
執行結果為:true
前面提到的opcache_reset函式將會清空所有的opcode快取,如果我們只想清空某個檔案的快取的話可以使用opcache_invalidate函式,下面是乙個例子:
test5.php
var_dump(opcache_invalidate('test2.php', true));
再次執行test3.php,執行結果為:false
還有兩個函式用於獲取opcache的相關資訊,opcache_get_status(獲取快取的狀態資訊),opcache_get_configuration(獲取快取的配置資訊),下面是乙個例子:
test6.php
var_dump(opcache_get_status());
var_dump(opcache_get_configuration());
執行結果:
關於php中opcache的使用就講到這裡,希望對各位有所幫助。
PHP常用的opcache配置
自用 zend extension opcache.so opcache可用記憶體 mb opcache.memory consumption 128 opcache.enable 1 opcache.enable cli 1 zend optimizer 暫存池中字串的佔記憶體總量.單位 mb o...
PHP中strtotime函式使用方法詳解
在php中有個叫做strtotime的函式。strtotime 實現功能 獲取某個日期的時間戳,或獲取某個時間的時間戳。strtotime 將任何英文文字的日期時間描述解析為unix時間戳 將系統時間轉化成unix時間戳 一,獲取指定日期的unix時間戳 strtotime 2009 1 22 示例...
PHP中strtotime函式使用方法詳解
在php中有個叫做strtotime的函式。strtotime 實現功能 獲取某個日期的時間戳,或獲取某個時間的時間戳。strtotime 將任何英文文字的日期時間描述解析為unix時間戳 將系統時間轉化成unix時間戳 一,獲取指定日期的unix時間戳 strtotime 2009 1 22 示例...