2010-06-11 53 views
1

我使用了下面的代碼,但需要時間。我想緩存而不存儲在文本文件中。如何在php中執行緩存

$file = 'cache_toppers.txt'; 
if (file_exists($file) && 
    filemtime($file) > (time() - $expire)) { 
    $records = unserialize(file_get_contents($file)); 
} else { 
    include("kalvidbconnect.php"); 

    $query = "SELECT * FROM vpfmsttoppers"; 
    $result = mysql_query($query) 
     or die (mysql_error()); 
    while ($record = mysql_fetch_array($result)) { 
     $records[] = $record; 
    } 
    $OUTPUT = serialize($records); 
    $fp = fopen($file,"w"); 
    fputs($fp, $OUTPUT); 
    fclose($fp); 
} 

感謝, Kamatchi.D

+0

您想在哪裏儲存信息?我不指望你會發現比本地磁盤更快的存儲形式(對於需要持續存儲的數據)。更可能的是,存儲不是問題,而是「反序列化」過程。 – VoteyDisciple 2010-06-11 13:48:18

回答

0

好,使用緩存的話,例如APC - apc_store()/apc_fetch()

+0

您的apc_store()ljnk有一個尾隨「。」。這是打破它。 – 2010-06-11 15:06:32

0

一個很好的教程如果你不想使用基於文件的緩存,那麼一種選擇是構建一個包裝,並將其存儲在共享內存,

http://se.php.net/manual/en/ref.sem.php

也許APC使用相同的技術,我不知道,但如果你不想安裝PECL擴展,那麼建立你自己的緩存處理可能是一個選擇。

但是我會考慮將渲染的內容緩存到文件中,因爲這會將最少的負載放在服務器上。

0

根據一個非常長的因素列表,我通常期望嘗試反序列化文件花費比從數據庫中新加載更長的時間。