Соедините 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 для запуска процесса мониторинга, полностью отделенного от веб-сервера.