如何在MySQL / PHP中进行实时数据库轮询?

时间:2010-11-17 00:41:18

标签: php jquery mysql real-time polling

我有一个不断更新MySQL数据库的Ruby脚本。我想实时显示“mysql_num_rows()”。因此,当Ruby脚本将条目输入数据库时​​,我希望PHP脚本实时更新其mysql_num_row()计数。

我尝试使用<meta http-equiv="refresh" content="5">,但我认为这不是最佳解决方案。

有没有人有更好的解决方案?

5 个答案:

答案 0 :(得分:3)

在页面上使用JavaScript定期调用服务器并获取一些数据。使用jQuery库来支持AJAX的跨浏览器,您只需执行此操作:

jQuery(function($){
  setInterval(function(){
    $.get( '/getrows.php', function(newRowCount){
      $('#rowcounter').html( newRowCount );
    });
  },5000); // 5000ms == 5 seconds
});

这将每隔5秒向您的服务器发出一个请求,并将您发送的任何内容的结果粘贴到ID为rowcounter的元素中,例如

<p>There are <span id='rowcounter'>xx</span> rows in the DB.</p>

答案 1 :(得分:1)

我会使用ajax更新程序来轮询打印mysql_num_row()的页面。原型将是一个很好的解决方案:http://www.prototypejs.org/api/ajax/updater

答案 2 :(得分:0)

只使用PHP和javascript,唯一的方法就是不断检查更新,尽管wajiw是正确的,ajax路由比整页刷新更少侵入/嘈杂。

在端口/套接字上需要一个具有站立连接的应用程序(或applet)才能获得更新。

答案 3 :(得分:0)

如果您将拥有大量访问者,最好将行号存储到静态文件中,并使用cron运行单独的脚本(或在服务器上以无限循环运行脚本)。然后用这个静态文件用JS显示数字,就像Phrogz建议的那样。否则你可以很快超过mysql连接限制。

答案 4 :(得分:-2)

轮询永远不可能是实时的!

然而,Juggernaut看起来符合您的要求: http://juggernaut.rubyforge.org here

但是你需要在客户端使用闪存。