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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With