Как транслировать содержимое файла в реальном времени в браузер - PullRequest
1 голос
/ 28 ноября 2009

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

Есть ли способ сохранить поток открытым для файла с php и для браузера? или это нужно будет делать, опрашивая файл каждые x секунд?

Заранее спасибо,

Шади

Ответы [ 3 ]

1 голос
/ 28 ноября 2009

Помните, что веб-модель по существу не имеет состояния (отключена). Имея это в виду, когда клиент отправляет запрос, сервер обрабатывает запрос и затем соответственно отправляет ответ. Вы можете отслеживать действия клиентов, используя файлы cookie и / или сеансы, но ресурсы, зарезервированные для запроса, освобождаются после отправки ответа обратно. Я думаю, что лучший способ удовлетворить вашу цель - это разработать веб-сервисы, которые проверяют состояние журнала и извлекают diff (если есть). Ваше приложение может состоять из веб-страницы с элементом div, который будет отображать разницу от веб-службы. Сценарий с таймером вызовет вызов веб-службы. Я постараюсь сделать что-то подобное через несколько недель, и я выложу все решение в moropo blog (испанский). Вы можете запросить перевод по почте, используя комментарии.

1 голос
/ 28 ноября 2009

Лучшим решением, безусловно, является AJAX в некотором качестве. Единственный способ заставить сервер «протолкнуть» вас так, как вы описываете (поддерживать открытый поток), - это оставить соединение HTTP открытым, что в конечном итоге вызовет тайм-ауты и потребит много ресурсов. Я бы заглянул в библиотеку Cometd . Недостатком этого является то, что я считаю, что это зависит от Java, хотя на сайте упоминаются Perl, Python и «другие языки». В худшем случае вы можете использовать конкретную реализацию причала только для мониторинга журналов на конкретном порту. Несмотря на это, эта структура, скорее всего, будет вашим лучшим выбором.

Любой веб-механизм чата, по сути, использует push-архитектуру, и было бы неплохо взглянуть на него для вдохновения. В этом случае вместо пользователей, создающих сообщения, которые отправляются другим пользователям, сервер создает события (когда генерируется сообщение журнала). Проверьте эту статью в чате Facebook , чтобы узнать, как они это делают. Возможно, стоит поискать в чате Google, если вы сможете найти что-нибудь о архитектуре.

Что касается фактической регистрации, я не уверен, что вам нужна помощь для этого, но log4php , которая в настоящее время находится в стадии инкубации, может быть хорошим местом для начала, поскольку она предоставляет вам конфигурацию которые могут одновременно регистрировать произвольное количество «регистраторов», таких как база данных, файл, сокет и т. д. Скорее всего, вы можете найти тот, который позволит вам привязать его к любой push-среде, которую вы выберете.

Удачи!

0 голосов
/ 28 ноября 2009

Лучший способ сделать это - использовать AJAX для извлечения содержимого файла каждые x секунд, создавая иллюзию реального времени.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...