我有一个不断更新MySQL数据库的Ruby脚本。我想实时显示“mysql_num_rows()
”。所以当一个条目通过Ruby脚本进入数据库时,我希望PHP脚本实时更新其mysql_num_row()计数。如何在MySQL/PHP中进行实时数据库轮询?
我试过使用<meta http-equiv="refresh" content="5">
,但我不认为这是最好的解决方案。
有没有人有更好的解决方案?
我有一个不断更新MySQL数据库的Ruby脚本。我想实时显示“mysql_num_rows()
”。所以当一个条目通过Ruby脚本进入数据库时,我希望PHP脚本实时更新其mysql_num_row()计数。如何在MySQL/PHP中进行实时数据库轮询?
我试过使用<meta http-equiv="refresh" content="5">
,但我不认为这是最好的解决方案。
有没有人有更好的解决方案?
我会使用ajax更新程序继续轮询打印mysql_num_row()的页面。原型将是一个很好的解决方案:http://www.prototypejs.org/api/ajax/updater
只有PHP和JavaScript的唯一方法是不断检查更新,虽然wajiw是正确的,即ajax路由比整个页面刷新更少干扰/噪音。
这将需要一个应用程序(或小应用程序)与端口/套接字上的常设连接来获取更新。
在页面上使用JavaScript定期拨打服务器的电话并获取一些数据。使用jQuery库跨浏览器支持AJAX的,你只需做到这一点:
jQuery(function($){
setInterval(function(){
$.get('/getrows.php', function(newRowCount){
$('#rowcounter').html(newRowCount);
});
},5000); // 5000ms == 5 seconds
});
这将使您的服务器请求每5秒钟,坚持不管你发回的元素与结果编号为rowcounter
,例如
<p>There are <span id='rowcounter'>xx</span> rows in the DB.</p>
这看起来对我来说是最好的解决方案。谢谢你的建议! – ethicalhack3r 2010-11-17 11:16:46
你把什么放在getrows.php文件?是否需要有任何标签为rowcounter或任何HTML标签? – charlie 2013-09-27 12:03:08
@charlie否:您只需返回一个文本字符串。不需要HTML或JSON(尽管您可以选择这样做,jQuery将相应地解析它)。 – Phrogz 2013-09-27 13:09:59
如果你将有大量游客,最好是你的行数存储与由cron运行独立的脚本静态文件(或无限循环在服务器上运行脚本)。然后用JS显示这个静态文件的编号,就像Phrogz建议的那样。否则,您可以非常快地超出mysql连接限制。
我调整了你的标签,删除了ruby,因为它对于这个问题并不重要,并且添加了jquery,因为它在选定的答案中很重要。 – 2010-11-21 06:07:57