2010-02-23 1 views
2

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

Любые идеи? Любые советы очень благодарны.

ответ

0

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

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

+0

Проблема с Хмм - это интенсивная подача питания - то есть она обновляется, по крайней мере, каждые 3 или 4 минуты. Любые другие идеи? – Bronwyn

+0

Затем проверьте, есть ли в канале данные, в которых вы можете опросить его чаще, или свяжитесь с ответственным лицом за сайт и спросите разрешения. – Quentin

+0

И использовать задание cron для выполнения сценария? – Bronwyn

0

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

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

+0

К сожалению, он не поддерживает протокол PubSubHubbub - здесь у меня заканчиваются идеи. Как-то мне нужно получить информацию из фида, который постоянно обновляется (это фид аварийных служб) и «кешировать» его в MySQL. – Bronwyn

1

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

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