PHP中的真实通知/推送通知系统

Posted

技术标签:

【中文标题】PHP中的真实通知/推送通知系统【英文标题】:Real notification/push notification system in PHP 【发布时间】:2016-02-27 02:02:47 【问题描述】:

我正在构建一个大学项目,在该项目中我需要实现一个通知系统,例如 Facebook,假设有两个用户登录。当一个用户 cmets/likes 另一个用户的帖子时,会为喜欢和创建一个数据库条目通知。同时,帖子作者也应该得到点赞/评论事件的通知,并且通知图标应该更新。项目是使用 php、Jquery、AJAX 等构建的。谁能告诉我如何在没有瓶颈的情况下实时实现这一点?参考链接或代码或教程将不胜感激。

【问题讨论】:

你可能想看看 websockets @Calimero 我确实搜索过它,但仍在寻找。还没有找到好的资源。 我猜pull-based更多是基于php和jquery的,但是为了保持脚本和payload的小,也许你可以考虑有一个like/comment/notification的列,这个列只返回true或 false 用于在 js->php 查询期间通知用户,只有在用户选择阅读通知时才执行完整查询,同时将用户行通知列更新为 0,否则只是一个简单的在单个列上选择(通知 = 1 WHERE user_id ...),以便 js 仅每 500 毫秒或 1000 毫秒执行一次后台查询。对于基于推送的,它相当复杂。 【参考方案1】:

这些基于 PHP 构建的系统无论如何都是基于 PULL 的通知,而不是基于推送的通知。

逻辑是您尝试尽可能频繁地查询数据库,以保持客户端负载和实时性之间的权衡。

例如:

function pullNotifications()

    $.ajax(
        url:"notificationFetch.php",
        success: function(data)
            // Parse data
            // Check new notifications if any
            // If yes notify user

            //....

            setTimeout(function()
                pullNotifications();
            ,1000); // Calling it again after every one second
        
    )

【讨论】:

在特定时间间隔后运行脚本或 AJAX 调用来检查新通知的效率会很低,对吧?有没有更有效的方法? 我认为这对你的college project来说太复杂了 是的,但我想实施或学习更好的方法来做到这一点。我很感激你的回答。但是,我仍然在寻找更好的选择。

以上是关于PHP中的真实通知/推送通知系统的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP 广播推送通知

IIS 服务器上 PHP 中的 Apple 推送通知服务

从 PHP 发送 iOS 推送通知

实现推送通知服务器:如何检查传递设备令牌的消息是不是来自真实设备?

iOS推送通知无法使用PHP

IBM Worklight 和推送通知问题