Создание слушателя redis - возможно в php? - PullRequest
5 голосов
/ 09 декабря 2011

Я медленно копаюсь и изучаю redis в свободное время, и меня интересуют варианты, доступные для создания «слушателя» для веб-сайта, который подписывается на канал, и обновляет веб-страницу по мере получения сообщений.

Теперь, из моих старых дней ActionScript и текущей работы с JavaScript, я хорошо знаком с концепцией слушателей, использующих эти два языка.Тем не менее, мое программирование на стороне сервера действительно распространяется только на PHP, немного рельсов, немного python и псевдо-node.js (я довольно опытный пользователь javascript и понимаю, что делает node.js).

Поскольку мой основной набор навыков заключается в php, я задаюсь вопросом, возможно ли вообще создать постоянное соединение / сокет с php и, таким образом, создать прослушиватель в PHP?

Так как я предполагаю, что это на самом деле невозможно (или эквивалентно исправлению трещины на ветровом стекле молотком), какие есть варианты на стороне сервера?Можно ли просто создать слушатель JavaScript, который использует постоянное соединение с сервером Redis (в настоящее время на локальном хосте).Socket.io - это то, что я должен изучить?

Любое понимание для новичка Redis будет высоко ценится.


edit Я нашел здесь отличный пост Как использовать redis ОПУБЛИКОВАТЬ / ПОДПИСАТЬСЯ сnodejs, чтобы уведомить клиентов, когда значения данных изменяются? , что частично отвечает на мой вопрос.

Есть ли метод, кроме node.js, который делает то же самое?Я в порядке, что полностью сбросил php и попробовал что-то новое для этого проекта.В любом случае, это личное.

Ответы [ 3 ]

2 голосов
/ 14 января 2012

Механизмы pub / sub в redis требуют, чтобы подписанный клиент был постоянным, то есть «всегда включен» для получения обновлений через подписку.

Возможно демонизировать PHP-скрипт/ application, но она не идеальна и не является одной из основных компетенций PHP.

Я бы порекомендовал поискать другое решение.Если вы нашли интересный пост node.js + redis + pub / sub, о котором вы упомянули, возможно, вам следует рассмотреть его более убедительно.

Вы также можете подумать о том, как заново спроектировать свои данные, хранящиеся в Redis.Возможно, набор, из которого элементы могут быть «извлечены», подойдет для той же цели, не требуя использования redis pub / sub.

2 голосов
/ 10 июля 2014

Примеры PubSubContext и DispatcherLoop из исходного кода Predis на Github представляют собой различные реализации того, чего вы пытаетесь достичь в PHP.

1 голос
/ 13 декабря 2011

Если все, что вам нужно, это подписаться на канал в Redis, а затем выполнить некоторую работу на стороне сервера , тогда кажется, что PHP будет работать просто отлично. Беглый взгляд на Predis и phpredis показывает, что они оба позволяют подписаться на канал redis и регистрировать обратный вызов, который срабатывает при получении сообщения.

...