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

3
我有一个Ruby脚本,它不断更新MySQL数据库。我想实时显示"mysql_num_rows()"。因此,当Ruby脚本将条目输入到数据库中时,我希望PHP脚本能够实时更新其mysql_num_row()计数。
我尝试使用<meta http-equiv="refresh" content="5">,但我认为这不是最好的解决方案。
有没有更好的解决方案?

我调整了您的标签,删除了Ruby,因为它对问题并不重要,并添加了jQuery,因为它在所选答案中很重要。 - the Tin Man
5个回答

2
在页面上使用JavaScript定期调用服务器并获取一些数据。为了实现AJAX的跨浏览器支持,可以使用jQuery库,只需这样做:
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>

这看起来对我来说是最好的解决方案。谢谢你的建议! - ethicalhack3r
你需要在getrows.php文件中放什么?是否需要任何带有rowcounter ID的HTML标签? - charlie
@charlie 不需要返回HTML或JSON,你只需返回一个文本字符串即可(不过如果你愿意可以这样做,jQuery也会相应地解析它)。 - Phrogz
如果所有客户端每隔几秒钟都向数据库发出调用以检查数据是否已更新,这不会影响数据库的性能吗? - deilkalb

1

0

只有 PHP 和 JavaScript 的情况下,唯一的方法是不断地检查更新,尽管 wajiw 是正确的,使用 AJAX 路由比完全刷新页面要少干扰/嘈杂。

需要一个应用程序(或小程序),在端口/套接字上保持连接,以便随时获取更新。


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

-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接