PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。關於PHP檔案快取的效能怎麼測試呢?下面是相關的知識,歡迎閱讀。
PHP常用快取方式:
第一種,把需要快取的資料進行處理,形成PHP可以直接執行的檔案。在需要快取資料的時候,通過include方式引入,並使用。
第二種,把需要的資料通過serialize函式序列化後直接儲存到檔案。在需要使用快取資料的時候,通過反序列化讀入檔案內容並複製給需要的變數,然後使用。
測試結果:
通過測試我們發現,第二種也就是serialize快取資料的.方式更加高效。(資料略去,最後提供了文章地址下載,大家可以自行測試)
原因分析:
include方式讀取快取的時候,PHP需要執行幾個過程
1.讀取檔案
2.解析所Include的檔案
3.執行,給變數賦值
而serialize序列化方式讀取快取的時候:
1.讀取資料
2.反序列化資料內容
3.給變數賦值
從以上內容對比的話,可能是由於解析PHP檔案內的陣列需要的時間超過unserialize反序列化陣列的時間。
測試檔案程式碼:
CacheTest_
$t1 = gettimeofday();
for ($i = 0; $i < 10000; $i++){
include("CacheTest_");
}
$t2 = gettimeofday();
echo ($t2['sec'] - $t1['sec']) * 1000 + ($t2['usec'] - $t1['usec']) / 1000 . "";
CacheTest_
function read_cache($filename) {
if(@$fp = fopen($filename, 'r')) {
@$data = fread($fp,filesize($cachefile));
fclose($fp);
}
return $s;
}
$t1 = gettimeofday();
for ($i = 0; $i < 10000; $i++){
$x = read_cache("CacheTest_");
$x_r = unserialize($x);
}
$t2 = gettimeofday();
echo ($t2['sec'] - $t1['sec']) * 1000 + ($t2['usec'] - $t1['usec']) / 1000 . "";
總結分析:
第一種,include快取的方式
優點:增加資料的保密性,和安全性,快取內容不會被外界發現。
缺點:速度相對較慢。
用途:儲存禁止系統外部得知的資料,比如web系統的設定,甚至MySQL資訊等的儲存
第二種,serialize序列化快取的方式
優點:速度較快。
缺點:快取系統檔案路徑一旦曝光,快取內容會洩露。
用途:快取最新文章,相關文章等不擔心外部得知的資料的時候,可以使用這種方式。