卡在通知系统中

时间:2019-01-05 13:00:18

标签: php mysql

我正在我正在开发的网站上使用PHP,MySql,jquery ajax开发通知系统。我有一个帖子,如果您对此发表评论,可以关注。我的问题是我被卡住了,我不知道如何向帖子后的所有用户发送通知。我确实成功地将通知发送给创建者或帖子。

在代码中,我将显示在通知表中输入通知的查询,我将发布notifications_table结构和Discussion_followers表,其中包括发布后的用户

这是将通知输入到notifications_table中的查询

// the board user_id is not the same as the logged in user which means the logged in user is not commenting on his post
        // which means we insert notification in table
        $query_not  = "INSERT INTO notifications ( ";
        $query_not .= "from_user, to_user, post_type, post_id, type, comment_id, notification_timestamp";
        $query_not .= ") VALUES (";
        $query_not .= " $user_id, $discussion_user_id_check, 'discussion', $discussion_id, 'comment', $fetched_comment_id, $discussion_comment_timestamp";
        $query_not .= ")";
        $result_not = mysqli_query($connection, $query_not);

所以我已经实现的是:不是讨论帖子中登录用户评论的用户,如果他还没有关注该帖子,那么他将通过在下表中输入带有ID的ID来跟随他,新通知将被插入notifications_table。创建该帖子的用户将收到此通知。我想要实现的目标是在此帖子之后向所有人发送通知,告知他们已输入新评论。

通知表的结构如下: notification_id,from_user,to_user,post_type,post_id,类型,comment_id,reply_id,notification_timestamp,已查看

通知示例: 121、20、30,讨论,31,评论,39、0、1534184319、0

遵循讨论帖子结构的

discussions_followers表是: follow_id,user_id,request_id

1 个答案:

答案 0 :(得分:-1)

老实说,如果我想做你想做的事,我不会创建我的数据结构来满足目的。但是无论如何,您都可以执行查询:

select from_user from notifications where post_id={discussion_id} group by from_user;

然后获取的所有ID都是您要从新用户推送通知的用户。 (您可以跳过$ from_user == $ user_id)。假设您有$ result,然后(简单代码):

for($i=0, $i<count($result); $i++){
    insert into notifications (from_user, to_user) values ($user_id, $result[$i]
    ['from_user'])
}

我更喜欢: 用于推送通知之类的系统。我总是喜欢将整个系统实现为微服务,并在我的项目之外。 (只是您知道不相关)。但是我要做的是,我将使用那些消息队列系统之一,而不将此类数据存储在数据库中以进行读取。您的表更像是一个日志表,您可以在其中记录通知并记录您想要的内容以进行进一步处理。但是从中读取内容只是为了知道谁应该推动谁,这是没有效率的。因此,表格帖子包含1个唯一ID和该帖子所涉及的用户ID。在每个评论上,创建ID为“ push- $ id”的队列,并将评论和用户ID逐一推送。队列的后台管理器将知道如何处理ID为“ push- *”的队列。在这里创建队列可能是一个问题,因此您可以在创建的每个帖子上创建一个空队列。 (它没有做任何事情,因为您只创建了指针而已)。