【问题标题】:live new message notification实时新消息通知
【发布时间】:2012-05-27 04:58:08
【问题描述】:

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

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

我还阅读了有关 MySQL 触发器的信息,但它似乎不是解决此问题的方法,因为它只会向数据库触发另一个 SQL 语句,而无助于向用户显示通知。

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

提前致谢

【问题讨论】:

    标签: php jquery mysql


    【解决方案1】:

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

    但如果您希望实现某种聊天功能,请尝试查看 http://www.phpfreechat.net/

    【讨论】:

      【解决方案2】:

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

      最好通过引用 here 来解释

      我不会这样做的原因有很多,这里有一些:

      PHP 是为快速执行而设计的(不是为了等待) PHP 将强制您在服务器端进行某种轮询并依赖 在睡眠() PHP 会吃掉你的 RAM,同时为每个请求生成进程也是如此 (Apache 会这样做)

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

      如果您想做类似的事情,请跳入一些技术 可以处理事件:Python (Tornado, gevent, eventlet, Twisted, ...), Ruby(Eventmachine,...)、Erlang、Scala、服务器端 JavaScript (node.js, ...), ...

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

      【讨论】:

      • hmmmm,我虽然应该很容易做到,但我不相信PHP中没有很好的解决方案!!!
      • 信不信由你,当您谈到推送/轮询技术时,PHP 并不是您想到的第一个技术。连第五个都不行!
      猜你喜欢
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多