Обнаружение и передача потока событий в веб-браузер (HTML5, PHP, PostgreSQL)? - PullRequest
0 голосов
/ 10 февраля 2011

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

Теперь, когда я уверен, что при использовании EventSource и PHP-документа для сервировки соответствующих данных: строки будут работать, я совершенно не представляю, как мне следует уведомить этот PHP-документ, когда действительно нужно отправить новое сообщение. .

По сути, я имею в виду, что когда действие происходит, в базу данных PostgreSQL будет входить информация о сообщении (например, о предпринятом действии). Однако неэффективно, чтобы каждый экземпляр «сообщения» PHP-документа (тот, к которому подключен EventSource) постоянно опрашивал PostgreSQL на предмет новых сообщений. При одновременной активности 50 пользователей это будет 50 экземпляров, опрашивающих PostgreSQL, и, как вы, вероятно, можете видеть, не очень эффективное использование ресурсов.

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

По существу Мне нужен способ уведомить запущенные экземпляры PHP (которые были запущены через Apache) о создании нового сообщения, вызвав функцию в другом экземпляре PHP с информацией о сообщении. Мне не нужна помощь в получении сообщений для клиента; Я могу сделать это с EventSource.

У кого-нибудь есть предложения относительно того, как можно выполнить эту задачу?

Ответы [ 3 ]

0 голосов
/ 10 февраля 2011

Посмотрите на php mem mem

0 голосов
/ 12 февраля 2011

Мне удалось это сделать, используя memcache со значением ключа подсчета сообщений и значением ключа $ i, где $ i - увеличивающееся число. Документ PHP подключен через длинный опрос, и он постоянно проверяет, существует ли сообщение - $ (messages-count), и в этом случае он возвращает его.

Это немного больше, поскольку он будет возвращать несколько сообщений, если они созданы одновременно, а также может загрузить начальный контрольный номер ($ i) в качестве параметра $ _GET, но это, по сути, так и работает. Это почти мгновенно, и новые сообщения могут быть легко добавлены в memcache через PHP (каждый раз, когда вы создаете новое сообщение, вы увеличиваете количество сообщений).

0 голосов
/ 10 февраля 2011

Обычные способы решения проблемы - использование Java-апплета (который может открыть сокет обратно на исходный сервер) или длительный опрос (например, комета ).

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