糯米文學吧

位置:首頁 > 計算機 > php語言

PHP文件緩存的性能測試

php語言1.64W

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序列化緩存的方式

優點:速度較快。

缺點:緩存系統文件路徑一旦曝光,緩存內容會泄露。

用途:緩存最新文章,相關文章等不擔心外部得知的數據的時候,可以使用這種方式。

標籤:PHP 緩存 測試 文件