Facebook-подобная система уведомлений в php - PullRequest
9 голосов
/ 31 августа 2010

Как мне установить систему уведомлений в стиле Facebook: - Пользователь A пишет сообщение пользователю B - Слушатель в базе данных направляет сообщение пользователю B - В интерфейсе userB сообщение появляется мгновенно

Как я могу сделать это в php?

Большое спасибо,

С уважением

Ответы [ 7 ]

7 голосов
/ 13 ноября 2010

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

Посмотрите на node.js, cometd или другое решение на основе push.Если вам нужно что-то простое и нужно быстро начать работу, я бы порекомендовал http://pusherapp.com/. У них есть PHP-клиент и супер простой API.

3 голосов
/ 31 августа 2010

У меня есть система, которая хорошо работает.Он в основном имеет настройку, подобную этой:

ID_ID_1003 * user_id
module
action_type
Added_by
read
read_date
добавил

Это простой способ сделать это.user_id - это то, для кого он предназначен, add_by - это идентификатор пользователя, который выполнял действие.Модуль - это то место, где он был выполнен, а action_type - это то, что произошло (комментарий, удаление, добавление и т. Д.).Чтение - это если оно уже было просмотрено, а read_date - когда оно было просмотрено.

У меня есть класс, который строит словесные выражения на основе значений, приведенных выше.

Затем я настроилcrontab, который удалит старые уведомления в базе данных через столько дней.

0 голосов
/ 19 июня 2016

В настоящее время лучшим решением является использование socket.io (http://socket.io/).). Он автоматически выбирает лучший (и доступный!) Способ передачи данных, в том числе: WebSockets, Adobe Flash Socket, Ajax polling. Вы действительно не беспокоитесь о доступности методов связи на стороне клиента.

0 голосов
/ 24 августа 2013

Очень возможно в наши дни.Я знаю, что этот ответ приходит очень поздно, но он поможет тем, кто будет просматривать эту страницу за помощью.Проверьте ссылку ниже для большого учебника Уведомление в реальном времени, как Facebook

0 голосов
/ 20 сентября 2010

Как уже упоминалось, akellehe, вы можете просто использовать Ajax для поиска нового контента, если ваши пользователи могут оставаться на одной странице в течение длительного времени. Если абсолютная доставка в реальном времени не является необходимостью, гораздо эффективнее проверять наличие новых уведомлений при перезагрузке страницы - особенно если вы кешируете (например, memcached) общее количество событий, ожидающих пользователя, и аннулируете только это количество в событии что-то добавлено в их очередь уведомлений. Это избавит вас от большого количества запросов к базе данных с пустыми руками.

0 голосов
/ 01 сентября 2010

Comet-сервер не так прост в написании на PHP, но это можно сделать с помощью снов.Есть также функции сокетов, которые могут быть полезны:

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

Решение также может зависеть от среды.Вы, вероятно, не можете сделать много полезных вещей на обычном общем веб-хостинге.

0 голосов
/ 31 августа 2010

Вы можете сделать это одним из двух способов.В PHP самый простой способ - это опрос.Более новый метод аккуратнее использует HTTP Push с сервером Comet;но это не так здорово для PHP.

Чтобы использовать опрос, просто обновите таблицу в базе данных с сообщением пользователя A, помеченным как подлежащее доставке пользователю b.У вас есть скрипт, запускаемый каждые несколько секунд через ajax, который опрашивает базу данных на наличие сообщения на клиенте userb.Если сообщение есть, вы заполняете его.Это очень неэффективно.

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