Как использовать опцию подписчика?

Я начал теперь с Pubsubhubbub (и все о вещах в реальном времени), но у меня возникают проблемы с опцией Subscriber.

Я пытаюсь разработать webapp в PHP для:

  1. Подписывать RSS (ранее опубликованный) в концентратор ( http://pubsubhubbub.appspot.com/ );
  2. Читать уведомления (обновления) из концентратора для подписки; без успеха !!! 🙁

Я проверяю, существует ли библиотека php для подписчика (в Git), но использование этой библиотеки не может сделать работу с подпиской (получить ошибку 409!).

Как я могу это сделать?

    Это старый вопрос, и связанная с ним библиотека PHP имеет много недостатков.

    Рекомендуемый PHP-подписчик в вики Google Code – это PuSHSubscriber:

    http://github.com/lxbarth/PuSHSubscriber/

    ОБНОВИТЬ:

    Я разветвил PuSHSподписчиков: http://github.com/bobdia/PuSHSubscriber

    Я сделал несколько несовместимых изменений с оригиналом. Простую реализацию можно найти в каталоге / example . Это не предназначено для реального использования, просто для демонстрационных целей. Надеюсь, вы сочтете это полезным.

    Первое, что я попробую, – это забыть о библиотеках и попытаться понять, что происходит в контексте абонента. Для создания скрипта, который обрабатывает все это, должно быть действительно просто.

    Абонентское приложение должно делать 2 вещи:

    • Подтвердите подозрительность: концентратор проверяет намерение подозреваемого. Это запрос GET
    • Сделка с входящими сообщениями. Это запрос POST.

    Итак, начнем :

    1. Поместите скрипт где-нибудь в Интернете (он должен быть доступен из-за брандмауэра), который должен обрабатывать запросы GET от концентратора. Убедитесь, что он только перекликается с параметром hub.challenge который он получает в теле ответа и возвращает 200.
    2. Отправьте из командной строки следующее: curl -X POST http://pubsubhubbub.appspot.com/ -d'hub.mode=subscribe' -d'hub.verify=sync' -d'hub.topic=http://the.feed.url' -d'hub.callback=http://the.script.url' -D-
    3. Вы должны увидеть входящий запрос проверки на скрипт. В идеале (если вы следовали за шагом 1, он должен повторить hub.challenge и вернуть 200.

    Если все было в порядке, запрос на отклонение, который вы отправляете, должен сообщить вам, что центр возвратил 204. Если вы получите что-нибудь еще, проверьте тело ответа, это покажет вам, что пошло не так.

    Позже…

    1. Ваш скрипт получит запрос POST. Это уведомление о новом контенте!
    2. Разберите исходное тело (XML) этого запроса POST, оно содержит фид, только с новыми записями.
    3. Делайте все, что нужно сделать с анализируемым контентом (сохранить в базу данных … и т. Д.).

    Надеюсь, это поможет. Вы также можете использовать этот инструмент для отладки вашей подписки за помощью.

    Некоторый код, который может быть полезен, с хорошими документами:

    • Zend Framework: Документация: Zend_Feed_Pubsubhubbub – Руководство по Zend Framework

    Пример подачи агрегирования:

    • padraic's ZFPlanet у мастера – GitHub