Tout d'abord, pour ajouter la mise en cache au script , il semble que ce ne serait pas trop difficile de mettre Zend_Feed
et Zend_Cache
ensemble - ou enveloppez simplement votre script de génération actuel avec Zend_Cache
.
Configurez simplement le cache avec votre durée de vie :
$frontendOptions = array(
'lifetime' => 7200, // cache lifetime of 2 hours
'automatic_serialization' => true
);
Vérifiez ensuite si le cache est toujours valide :
if(!$feed = $cache->load('myfeed')) {
//generate feed
$cache->save($feed, 'myfeed');
}
//output $feed
Je ne sais pas comment vous formez votre RSS, mais vous pouvez importer une structure de tableau dans Zend_Feed
:
$rssFeedFromArray = Zend_Feed::importArray($array, 'rss');
Bien sûr, la meilleure façon peut être simplement d'utiliser votre générateur de flux actuel et d'enregistrer la sortie dans un fichier . Utilisez ce fichier comme flux RSS, puis utilisez cron/web hooks/queue/whatever pour générer le fichier statique. Ce serait plus simple et utiliserait moins de ressources que de laisser le script de génération faire la mise en cache.
//feedGen.php
//may require some output buffering if the feed generator outputs directly
$output = $myFeedGenerator->output();
file_put_contents('feed.rss', $output);
Maintenant, le lien du flux est /feed.rss
, et vous exécutez simplement feedGen.php
chaque fois qu'il doit être rafraîchi. Servir le fichier statique (même pas analysé par php) signifie moins de travail pour votre serveur.