如何建立有效的通知系统?

时间:2017-08-22 08:16:19

标签: php mysql cron

我需要为我网站的用户建立一个通知系统。 每个用户都会关注某些主题,因此,当有人发布有关某个主题的内容时,遵循此主题的每个用户都必须收到通知。

现在我有一个cronjob,它获取每个用户通知的最后开放时间的日期,然后我获得在此日期之后发布的所有帖子,然后我将其保存到每个用户的通知表中

---------------     ---------------------------------------
|   new_post   |    |               USERS                 |
---------------     ---------------------------------------
|  id  | post  |    |ud_usr |last_notif_opening(datestamp)|
---------------     ---------------------------------------
|   1  string  |    |   1   |   2017-08-21 10:10:10       |

那些,其中,我实际上在每一个中存储了新帖子的id,所以接下来我得到那些表的记录,然后我得到带有id列关系的文本。

-notification_user1
-notification_user2
-notification_user3

我认为这不是一个好的解决方案,因为用户可能无法在合适的时间收到通知,因为cronjob正在查看其他用户的通知。

你能帮助我找到更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

您应该使用实时解决方案,对于实时Web应用程序,有许多技术可供使用,目前Web上最常用的技术可能是nodeJs

在PHP中使用像Laravel这样的框架时,Laravel框架内部有一个强大的通知组件,但如果你想使用纯PHP或其他php框架,最有效的方法是在PHP中使用WebSockets。

使用WebSockets时,您需要一个websocket服务器来处理两个对等体之间的通信,让我在这方面准确解释您的问题。 您正在寻找的是某种渠道,您希望用户在渠道上订阅,将通知推送到渠道,以便订阅者可以获得推送的消息或数据。 在PHP中实现这种功能并不困难,您应该使用以下功能:

  1. Ratchet:PHP Websocket Library还具有轻松制作Web套接字服务器的功能
  2. Thruway:当你想要创建频道时,你需要这个支持WAMP(Web应用程序消息传递协议)版本2的库
  3. AutobahnJs:用于处理客户端代码以使用WAMP并创建频道。
  4. 以上功能是您在PHP中使用websockets和渠道所需的全部功能。希望它可以帮到你

答案 1 :(得分:0)