Я получаю XML-файл с удаленного сервера, который содержит довольно статические данные. Вот мой код:
$dom = simplexml_load_file("foo.xml"); foreach ($dom->bar->baz as $item) { echo $item; }
Поскольку данные редко меняются, нет необходимости пинговать сервер при каждой загрузке страницы … Как я могу кэшировать foo.xml простым способом? Имейте в виду, что я новичок …
Спасибо!
Очень упрощенным кэшем было бы хранить 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); // ...
Примечание. Это, конечно, предполагает несколько вещей, таких как файл, который был успешно сгенерирован, удаленный файл успешно загружен и т. д.