Подключите PHP к Orbited

После поиска в Интернете хорошей кометы, а также вопроса о моем лучший вариант - я выбрал Orbited. Проблема в том, что если вам нужна хорошая документация по Comet, вы ее не найдете. Я установил Orbited и, похоже, он работает нормально.

По сути, я хочу постоянно проверять базу данных и видеть, есть ли новые данные. Если есть, я хочу отправить его своим клиентам и обновить их домашнюю страницу, но я не могу найти какой-либо хороший и четкий документ, объясняющий, как постоянно проверять базу данных и отправлять новую информацию в Orbited, а затем клиентам. Ребята, вы это реализовали?

Кроме того, сколько пользователей может обрабатывать Orbited?

Любые идеи?


person codemaker    schedule 28.12.2009    source источник
comment
AFAIK, Orbited был протестирован с 10 тыс. Клиентов на холостом ходу. Проверьте последнюю запись на http://cometdaily.com/2008/03/14/comet-gazing-maturity/ - Майкл Картер   -  person planestepper    schedule 25.06.2011


Ответы (3)


Вы можете добавить триггер базы данных, который отправляет сообщения в вашу очередь сообщений при изменении базы данных. Это также предлагается здесь. Или, если с базой данных общается только ваше приложение, вы можете справиться с этим изнутри приложения с помощью Тема / Наблюдатель шаблон, уведомляющий очередь всякий раз, когда кто-то вызывает действие, изменяющее что-то в БД.

Не знаю, насколько хороши или плохи орбитальные весы.

person Gordon    schedule 28.12.2009
comment
+1 за предложение использовать очередь сообщений. Решения для опроса базы данных не масштабируются. - person Bill Karwin; 03.01.2010

Имейте справочную таблицу, в которой отслеживается время последнего обновления исходной таблицы. Создайте триггер обновления / удаления / вставки для исходной таблицы, который обновляет время в справочной таблице.

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

И извините, я мало что знаю об Orbited.

person Nirmal    schedule 28.12.2009

Я бы использовал протокол STOMP с Orbited для передачи данных клиентам. Просто найдите хороший клиент STOMP с PHP и приступайте к работе.

Вот пример использования STOMP, хотя серверная часть написана на Ruby: http://fuglyatblogging.wordpress.com/2008/10/

Я не знаю, является ли PHP с Apache (если это то, что вы используете) лучшим набором для мониторинга изменений базы данных. Прочтите эту статью под заголовком раздела «Орбитальный сервер», чтобы получить объяснение: http://thingsilearned.com/2009/06/09/starting-out-with-comet-orbited-part-1/

РЕДАКТИРОВАТЬ: если вы хотите пройти путь с PHP через веб-сервер, вам нужно сделать один и только один запрос к сценарию, который запускает мониторинг и выталкивает изменения. И если этот сценарий истекает или дает сбой, вам нужно запустить новый. Немного странно :) Более приятным и чистым способом было бы, например, использовать twisted с python для запуска процесса мониторинга, полностью отделенного от веб-сервера.

person finpingvin    schedule 28.12.2009