Mysql
 sql >> Base de données >  >> RDS >> Mysql

Générateur RSS avec fonction de mise en cache

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.