任何人都可以告诉我如何在没有永久连接到 PHP 的情况下向客户端发送通知的方法
Posted
技术标签:
【中文标题】任何人都可以告诉我如何在没有永久连接到 PHP 的情况下向客户端发送通知的方法【英文标题】:Can any one show me a way how to send notifications to client without a permanent connection to PHP 【发布时间】:2011-12-09 05:26:49 【问题描述】:在我的应用程序中,我想向客户端发送一些警报。 我的意思是我想在没有类似于推送服务器的请求的情况下向客户端发送更新。
任何机构都可以建议我这样做吗...?
提前致谢 拉维拉佳
【问题讨论】:
在没有永久连接的情况下发送通知的最常见方法之一是使用类似“心跳”的函数,该函数对服务器进行 ajax 调用,以检查是否每 # 分钟/ 有新消息/通知秒。 @WilHall Client 是简单的浏览器。 @JeffWilbert 谢谢你的回答,你会建议这将是最好的方式...? JeffWilbert 是对的,您只需定期调用服务器以检查新更新。 您可以选择间隔轮询(如前所述)或长轮询。如果不需要立即做出反应,则间隔轮询可以工作,长轮询允许近乎实时的通知。关键词:长轮询、彗星 另见***:en.wikipedia.org/wiki/Push_technology 【参考方案1】:在没有永久连接的情况下处理通知的最佳方法是使用人们所说的心跳功能。
heartbeat 函数是一个函数/方法,它会在一定间隔内重复调用,就像您的心跳以恒定的节奏跳动一样。
setInterval(function ()
$.get("/heartbeat.php", null, function (response)
// check the response from heartbeat.php for new notifications
);
, 10000);
注意:上面的例子包含jQuery代码$.get( ... )
,非jQuery的方式是使用XMLHttpRequest
进行ajax调用。
上面会每 10 秒调用一次 php 脚本来检查新的通知。可以添加新通知,例如使用数据库中的表。例如,有一个通知表和 3 个(如果需要日期则为 4 个)字段:一个用户标识符字段、消息字段和一个“已读”/“已发送”标志字段。
新的通知将被添加到表中,当调用 heatbeat 脚本时,它将检查用户标识符和标记字段以获取新消息;如果找到,则回复该消息并将其标记为已发送。
【讨论】:
以上是关于任何人都可以告诉我如何在没有永久连接到 PHP 的情况下向客户端发送通知的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SQL 开发人员/Toad 连接到 Oracle 8i