система уведомлений php

394
17 января 2017, 23:56

здравствуйте, есть сайт

у любых пользователей есть возможность добавлять на вашу страницу новости, есть возможность подписаться и поставить лайк

структура бд подписок такова, есть таблица user_subscr в ней айди пользователя, и айди пользователя на которого подписан предыдущий айди

структура бд лайков: таблица из айди пользователя, айди новости

как примерно можно реализовать небольшую систему уведомлений? на подобии "На вас подписался user", "новость с айди 123 лайкнуло 10 человек" и тд

Answer 1

Можно браузерные push-уведомления подключить, к примеру: https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web
Или веб сервис на подобии: https://sendpulse.com

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

К примеру, если на сервере, то можно воспользоваться таким решением, без сторонних веб сервисов: https://github.com/centrifugal/centrifugo

А если на хостинге, то вам лучше выбрать один из веб сервисов. К примеру: https://pusher.com/

Касательно внутренней реализации в проекте, создайте таблицу events, в которой будут поля:

  • ID - id события
  • resource_type - название таблицы ресурса к которому относиться уведомление (новости, лайки и т.д.)
  • resource_id - ID ресурса
  • initiator_id - ID пользователя, который вызвал событие
  • timestamp - временная метка события

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

А дальше уже дело за реализацией логики.

К примеру, чтобы реализовать уведомления типа "На вас подписался user" - достаточно делать push-уведомление при инициализации этого события.

"новость с айди 123 лайкнуло 10 человек" - прописать условие, которое при каждом лайке или по расписанию (используйте cron, если есть возможность) делает проверку связки событий в БД таблице events по группировке полей: resource_type, resource_id. Если набралось, к примеру 10 новых лайков, то тогда отсылайте push-уведомление.

Соответственно вам потребуется слушатель на JS для frontend-а. Но, я думаю у вас с реализацией тут не должно быть проблем. Воспользуйтесь WebSocket-ом. https://learn.javascript.ru/websockets

READ ALSO
Выборка строк mysql по заданному парамерту

Выборка строк mysql по заданному парамерту

Суть следующая: Имеется таблица

406
Отваливается general_log в mariadb

Отваливается general_log в mariadb

Есть необходимость писать все запросы к БД в файлДля этого включаю в настройках (переменные сервера) general_log=1 Однако спустя время (возможно...

294
Проблемы с восстановлением сайта на Joomla

Проблемы с восстановлением сайта на Joomla

Всем приветЕсть бэкап Joomla сайта, сделанный в Akeeba

341
Параметр с переменной арностью

Параметр с переменной арностью

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

325