2010-08-30 2 views
9

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

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

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

С уважением

+0

Я очень ценю ваши идеи. У вас есть часть кода для обмена? Еще раз спасибо. – Zakaria

+0

Это довольно сложная система. Лучше всего было бы попробовать это самостоятельно и задать конкретные вопросы о том, где вы застряли. Я был бы рад взимать с вас стандартную плату, если вы хотите, чтобы я написал ее для вас или сесть за виртуальную 1-на-1. – bradenkeith

ответ

0

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

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

3

У меня есть система, которая хорошо работает на месте. Это в основном имеет настройки, как это:

notification_id
user_id
модуль
ACTION_TYPE
added_by
чтения
read_date
добавил

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

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

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

0

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

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

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

+1

Это ужасная идея. PHP не ориентирован на длительный опрос. –

0

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

7

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

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

0

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

0

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

Смежные вопросы