2011-08-02 3 views
3

J'obtiens un fichier XML d'un serveur distant qui contient des données assez statiques. Voici mon code:Comment mettre en cache un fichier XML en PHP?

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

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

Puisque les données changent rarement, il n'y a pas besoin de faire un ping le serveur sur chaque chargement de page ... Comment puis-je mettre en cache foo.xml de manière simple? Gardez à l'esprit que je suis un débutant ...

Merci!

Répondre

9

Un cache très simpliste serait de stocker le fichier XML dans un répertoire, et mis à jour toutes les heures

$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: Ceci suppose bien entendu plusieurs choses comme le fichier a été généré avec succès, le fichier distant téléchargé avec succès, etc.

+1

génial! Je vous remercie! – dmubu

+0

que se passe-t-il si la page est accessible par deux utilisateurs différents avec des ordinateurs différents? et avec différents paramètres? –

+0

Ne pas oublier 'clearstatcache()' avec la fonction 'filemtime()'. – Volomike

Questions connexes