當前位置:才華齋>計算機>php語言>

PHP檔案快取的效能測試

php語言 閱讀(1.68W)

PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。關於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序列化快取的方式

優點:速度較快。

缺點:快取系統檔案路徑一旦曝光,快取內容會洩露。

用途:快取最新文章,相關文章等不擔心外部得知的資料的時候,可以使用這種方式。