2012-05-24 4 views
0

Я совершенно новый в Zend Framework и RSS тоже. Я хотел бы создать на своем сайте RSS-канал (конечно, доступный пользователю в XML-файле). Я создал RssController и соответствующий вид: rss/index.phtml. Создание XML-файлов отлично подходит для меня.Как создать rss-канал с autoupdate в Zend

В RssControllers У меня есть indexAction:

public function indexAction() 
{  
    $feedData = array(...); 

    $feed = Zend_Feed::importArray ($feedData, 'rss'); 
    $rssFeed = $feed->saveXML(); 

    $fh = fopen("rss.xml", "w"); 
    fwrite($fh, $rssFeed); 
    fclose($fh); 
} 

Как вы можете догадаться, мой rss.xml файл генерирует каждый раз, когда посетил MySite/Новости. Я хотел бы, если это возможно, создать автоматическое обновление RSS-канала за определенный промежуток времени. И, конечно же, не генерируется каждый раз, когда посещается rss-сайт. Как я могу сделать что-то подобное?

ответ

0

Hum IAM не уверен, что вы хотите, но:

вам не нужно обработчик файла ..

// Disable VIEW/Layout 
$this->_helper->layout->disableLayout(); 
$this->_helper->viewRenderer->setNoRender(true); 

$feed = Zend_Feed::importArray ($feedData, 'rss'); 
echo $feed->send(); 

Так браузер получает "XML" вместо HTML или то, что когда-либо ..

+0

Раньше я сделал что-то похожее на ваш код. И я не знаю, какое решение является правильным. Теперь я хочу создать несколько xml-файлов с различным контентом с моего сайта. И я думал создать XML-файлы в моем 'RssController'. Я боюсь этого, если мой rss отправит новые статьи в rss-читатели каждый раз, когда появится какая-то статья. Или только при посещении сайта? Rss? Может быть, я не понимаю, как что-то работает в rss ... – woyaru

+0

ehm RSS не PUSH, это PULL, клиент запрашивает Feed. – opHASnoNAME

0

у вас есть три способа обновления RSS:

1 - Работа с асинхронной системой

2 - Вставьте URL-адрес вашего контроллера в систему CRON (crontab linux или окна планировщика задач) и выполните запросы, когда захотите.

3 - Создайте Zend_Action_Helper, и когда страница будет доступна, вы вызываете это действие.