I am obtaining an XML file from a remote server which contains fairly static data. Here is my code:
$dom = simplexml_load_file("foo.xml");
foreach ($dom->bar->baz as $item) {
echo $item;
}
Since the data is rarely changing, there is no need to ping the server on each page load...How can I cache foo.xml in a simple manner? Keep in mind that I am a beginner...开发者_运维技巧
Thank you!
A very simplistic cache would be to store the xml file into a directory, and updated every hour or so
$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);
// ...
note: This of course assumes several things like the file was successfully generated, the remote file successfully downloaded, etc.
精彩评论