仅在有人提交新邮件时加载数据

时间:2014-07-17 10:05:00

标签: php ajax database

所以我在php中创建了非常简单的聊天框。它工作得非常好,但我必须设置从数据库到聊天窗口的不间断加载数据的脚本(不是最有效的方式,这就是我要问的原因):

    <script type='text/javascript'>
    $('#chatbox').html('Loading...');
    $(document).ready(function() {
    setInterval(function(){loop()}, 0);
    function loop(){
     $('#chatbox').load('/chatbox.php');
    }

}); 
    </script>

在chatbox.php中:

include '/classes/class.chatbox.php';
$chat = new Chat();
$chatboxMsg = $chat->getNewMessages();
echo $chatboxMsg;

但这不是问题。我的问题是,如何为所有打开聊天窗口的用户加载数据(=刷新聊天),只有当有人发布新消息(=将新行插入数据库),而不运行每秒检查一次的脚本?

3 个答案:

答案 0 :(得分:2)

您需要服务器生成的事件。

最快和推荐的解决方案基于:

Node.js

使用的更多可能性:

  • AJAX长轮询
  • HTML5服务器已发送事件
  • HTML5网站
  • 彗星

附加链接和样本:

答案 1 :(得分:1)

我想你需要听众。以下是您如何以最佳方式实施它们:PHP Event-Listener best-practice implementation

答案 2 :(得分:1)

检查socket.io。你肯定会发现它是最简单的方法。当新消息出现时,您可以广播该消息。以下是您可以使用的一些参考资料

希望有所帮助