Соедините PHP с Orbited

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

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

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

Есть идеи?

3 ответа

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

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

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

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

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

Я бы использовал протокол 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 через веб-сервер, вам нужно сделать один, и только один, запрос к сценарию, который запускает мониторинг и выталкивает изменения. И если этот сценарий истекает или завершается ошибкой, вам нужно запустить новый. Немного неаккуратно:) Более приятным и понятным способом было бы, например, использовать витую с python для запуска процесса мониторинга, полностью отделенного от веб-сервера.

Другие вопросы по тегам