Primeiro, para adicionar cache ao script , parece que não seria muito difícil colocar
Zend_Feed
e Zend_Cache
juntos - ou apenas envolva seu script de geração atual com Zend_Cache
. Basta configurar o cache com o seu tempo de vida:
$frontendOptions = array(
'lifetime' => 7200, // cache lifetime of 2 hours
'automatic_serialization' => true
);
Em seguida, verifique se o cache ainda é válido:
if(!$feed = $cache->load('myfeed')) {
//generate feed
$cache->save($feed, 'myfeed');
}
//output $feed
Não sei como você forma seu RSS, mas você pode importar uma estrutura de array para
Zend_Feed
:$rssFeedFromArray = Zend_Feed::importArray($array, 'rss');
Claro que a melhor maneira pode ser apenas usar seu gerador de feeds atual e salvar a saída em um arquivo . Use esse arquivo como o feed RSS e, em seguida, use cron/web hooks/queue/whatever para gerar o arquivo estático. Isso seria mais simples e usaria menos recursos do que ter o script de geração fazendo o cache.
//feedGen.php
//may require some output buffering if the feed generator outputs directly
$output = $myFeedGenerator->output();
file_put_contents('feed.rss', $output);
Agora o link do feed é
/feed.rss
, e você apenas executa feedGen.php
sempre que precisar ser atualizado. Servir o arquivo estático (nem mesmo analisado pelo php) significa menos para o seu servidor.