Как автоматически разобрать канал RSS для хранения в базе данных MySQL? - PullRequest
2 голосов
/ 23 февраля 2010

Мне нужно каким-то образом автоматически обновлять / анализировать пару RSS-каналов и помещать их в базу данных MySQL почти сразу после обновления канала или как можно ближе к нему. Тем не менее, я не могу найти лучший способ сделать это автоматически - я нашел учебники для этого, когда пользователь запускает скрипт - но в этом случае все это нужно делать в фоновом режиме. Будет ли подходить работа cron?

Есть идеи? Спасибо за любые советы.

Ответы [ 3 ]

1 голос
/ 23 июля 2010

Вы должны проверить Zend_Feed_Reader .
Zend_Feed_Reader обеспечивает условную поддержку HTTP GET .
Если каналы настроены правильно, ваш сценарий должен загружать и анализировать канал только в том случае, если он даже изменился.

Вам не нужен полный Zend Framework. Zend_Feed_Reader имеет очень мало зависимостей, поэтому его можно использовать автономно.

0 голосов
/ 23 февраля 2010

Если вы действительно контролируете источник RSS-канала, взгляните на другой Наблюдательский паттерн . Если нет, проверьте, поддерживает ли исходная лента PubSubHubbub :

Простой, открытый серверный серверный протокол pubsub (публикация / подписка) на основе веб-хуков в качестве расширения для Atom и RSS. Стороны (серверы), говорящие по протоколу PubSubHubbub, могут получать почти мгновенные уведомления (через обратные вызовы webhook), когда обновляется тема (URL канала), в которой они заинтересованы.

0 голосов
/ 23 февраля 2010

Это может быть сделано только в ответ на что-то - задание cron просто означает «в ответ на то, что это определенное время» Вы должны решить, какое событие лучше всего подходит для ваших конкретных обстоятельств.

Предполагая, что вы не контролируете источник RSS-каналов, делать это периодически через cron имеет смысл. Чтобы запустить его «сразу после обновления канала или как можно ближе к нему», вам придется опрашивать каждую секунду, что сделает вас крайне непопулярным. Проверять не чаще, чем ежечасно (если канал не содержит информацию, предоставляющую другой период проверки).

...