Модель системы уведомлений PHP / Ajax? - PullRequest
1 голос
/ 04 июля 2011

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

Структура, которой, я думаю, будет следовать сайт, будет состоять из нескольких таблиц для разных приложений, т. Е. Фотографии будут добавлять идентификатор для изображения, имя файла и несколько идентификаторов пользователя, если они будут помечены или что-то в этом роде, и способы отправки. эта информация для пользователя в режиме реального времени .. за мной.

Так что мне пришлось бы запускать несколько запросов каждые несколько секунд, просматривая таблицы базы данных на предмет $ _SESSION ['id'] пользователя, найденного во всех таблицах приложений с состоянием непрочитанного?

Другая возможность состоит в том, что у каждого пользователя есть своя таблица? Это много. лол.

Или просто таблица уведомлений с самым последним уведомлением, помещаемым в таблицу с уникальным идентификатором и идентификатором пользователя?

Я действительно не могу обернуться вокруг этого, лол.

Кроме того, отображение уведомлений в режиме реального времени? Я понимаю, что Facebook использует длинные опросы и получает уведомления в режиме реального времени, но я не думаю, что я мог бы оставить около 5-10 запросов (для каждого приложения), запущенных в длинном опросе для нескольких клиентов, или это привело бы к полному отказу сервер, верно?

Какой-нибудь совет / код о том, как я могу попытаться создать систему уведомлений для сайта социальной сети? Если нет, я думаю, что я пойду со статическими уведомлениями, а не любым видом в реальном времени.

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

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Ну, вот мое мнение.

Вы можете создавать разные таблицы для статуса, фотографий и видео.Каждый раз, когда кто-то комментирует видео или что-то еще, вы можете сделать запрос, чтобы сохранить уведомление вместе с информацией пользователя, который ему понравился, вы также должны установить поле статуса, чтобы вы могли запрашивать, основываясь на том, что было просмотрено, а что нет.был замечен пользователем.Вы можете поместить URL-адрес страницы, на которой находится фотография или статус, чтобы при входе пользователя в систему вы каждые пять минут выполняли запрос, проверяя наличие непрочитанных уведомлений, если они есть, вы отображаете их в крошечном тостовом сообщении слева внизу.сторона экрана, например, Facebook.

При нажатии на тост-сообщение вы можете сделать ajax-вызов, чтобы обновить статус уведомления и прочитать его, чтобы он больше не отображался, и в случае успешного обратного вызова вы можете принятьпользователь на страницу, где обновление статуса.

1 голос
/ 04 июля 2011

Я бы сказал, что длинный опрос - это ответ. Gmail и Facebook оба используют этот метод для уведомлений в реальном времени. Ваша единственная альтернатива - Flex с сервисом обработки данных, но это не PHP.

С точки зрения производительности, запрос будет извлекать только 0-5 уведомлений за раз, и если таблицы проиндексированы должным образом и запрос написан правильно, то 5 из этих запросов не окажут существенного влияния на вашем сервере.

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

...