Система facebook-like-notification в php

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

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

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

С уважением

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

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

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

notification_id
Идентификатор пользователя
модуль
ACTION_TYPE
Добавлено
читать
read_date
добавленной

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

Затем у меня есть класс, который строит формулировку, основанную на том, что значения выше.

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

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

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

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

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

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

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

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

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