2010-08-21 2 views
1

Connaissez-vous un bon script de générateur rss avec fonction de mise en cache? Tout le script que j'ai trouvé sur le net ne supporte pas la mise en cache! J'ai besoin que le contenu de rss soit généré automatiquement à partir de la base de données dans une période de temps spécifiée.Générateur RSS avec fonction de mise en cache

Merci à l'avance

Répondre

3

D'abord, ajouter la mise en cache du script , il semble que ce ne serait pas trop difficile à mettre Zend_Feed et Zend_Cache ensemble - ou tout simplement envelopper votre script en cours de génération avec Zend_Cache .

configuration Juste le cache avec votre vie:

$frontendOptions = array(
    'lifetime' => 7200, // cache lifetime of 2 hours 
    'automatic_serialization' => true 
); 

vérifier 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 flux RSS, mais vous pouvez import an array structure to Zend_Feed :

$rssFeedFromArray = Zend_Feed::importArray($array, 'rss'); 

Bien sûr, la meilleure façon peut être juste utiliser votre générateur de flux actuel et 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. Cela serait plus simple, et utiliserait moins de ressources, que de faire en sorte que le script de génération fasse 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 d'alimentation est /feed.rss, et que vous exécutez juste feedGen.php chaque fois qu'il a besoin d'être rafraîchi. Servir le fichier statique (même pas analysé par php) signifie moins pour votre serveur à faire.