2011-08-02 85 views
3

我正在從包含相當靜態數據的遠程服務器獲取XML文件。這裏是我的代碼:如何在PHP中緩存XML文件?

$dom = simplexml_load_file("foo.xml"); 

foreach ($dom->bar->baz as $item) { 
echo $item; 
} 

由於數據很少改變,沒有必要來ping每個頁面加載服務器...我如何可以緩存foo.xml以簡單的方式?請記住,我是一名初學者...

謝謝!

回答

9

一個非常簡單的緩存將存儲在XML文件到一個目錄中,並更新每隔一小時左右

$cacheName = 'somefile.xml.cache'; 
// generate the cache version if it doesn't exist or it's too old! 
$ageInSeconds = 3600; // one hour 
if(!file_exists($cacheName) || filemtime($cacheName) > time() + $ageInSeconds) { 
    $contents = file_get_contents('http://www.something.com/foo.xml'); 
    file_put_contents($cacheName, $contents); 
} 

$dom = simplexml_load_file($cacheName); 
// ... 

注:當然,這幾個假定像已成功生成的文件,遠程文件成功下載等。

+1

太棒了!謝謝! – dmubu

+0

如果頁面被兩個不同的用戶使用不同的計算機訪問會發生什麼?並與不同的參數? –

+0

用'filemtime()'函數不要忘記'clearstatcache()'。 – Volomike