直播新消息通知

时间:2012-05-20 10:21:18

标签: php jquery mysql

想象一下,我们为网站用户设置了一个消息框系统,我想要做的是,如果向成员发送新消息,而目标成员在他的收件箱中,他可以看到正确的通知消息在收到新消息后。

为了拥有这个,我们可以使用带有setInterval()的jQuery刷新“new_messages”div并发送查询以查看是否有新消息,但如果我们有10.000个成员,我们就不能发送10.000查询,这可能会杀死服务器!我希望只有当hi收到新消息时才会为目标成员显示通知。类似的东西,我们可以在页面中有一个“监听”div,它会在触发新消息时被触发。

我也读过关于MySQL触发器的内容,但似乎不会有解决方案,因为它可能会向数据库发出另一个SQL语句而无法向用户显示通知。

那么这种情况的解决方案是什么?

提前致谢

2 个答案:

答案 0 :(得分:2)

您可以查看PHP Comet system问题,了解将实时事件从服务器推送到浏览器的想法。或者尝试查看使用Websockets的详细信息。但是这些并不适合PHP。

但是,如果你想实现某种聊天,请尝试查看http://www.phpfreechat.net/

答案 1 :(得分:1)

或者您可以使用Long-Polling,但我认为PHP不是解决这个问题的最佳解决方案。

最佳解释是here

  

我不会这么做的原因有很多:

     

PHP用于快速执行(不等待)   PHP将强制您在服务器端进行某种轮询并依赖   睡觉()   PHP会占用您的RAM,因此每个请求都会生成进程   (Apache会这样做)

     

但是你可以使用sleep,轮询数据库(或者更好的缓存APC / Memcache)。

     

如果你想做一些像这样的东西跳进一些技术   可以处理事件:Python(Tornado,gevent,eventlet,Twisted,...),   Ruby(Eventmachine,...),Erlang,Scala,Server Side JavaScript   (node.js,...),...

     

很抱歉,如果这不是您问题的直接答案,我仍然鼓励   你可以尝试在纯PHP中使用它来查看它的行为(尤其是   网络服务器)。