使用 mySQL 数据实时更新表
Posted
技术标签:
【中文标题】使用 mySQL 数据实时更新表【英文标题】:Live updating table with mySQL data 【发布时间】:2021-10-15 04:19:54 【问题描述】:我的数据库几乎每隔几秒就会更新一次新行。
我在我的网站上有一个表格,我希望在无需用户刷新页面的情况下自动更新添加到顶部的新行。
我正在测试以下内容:
$(document).ready(function()
loadstation();
);
function loadstation()
$("#data_download").load("/include/data_download.php");
setTimeout(loadstation, 1000);
这可行,但是我无法选择表中的任何内容,因为当函数刷新请求时,会取消选择所有内容。我还遇到了另一个规模问题,在页面上一段时间后,我在浏览器上收到有关内存问题“SBOX_FATAL_MEMORY_EXCEEDED”的错误。
什么是让它可扩展且没有内存问题的最佳方法。
提前致谢。
【问题讨论】:
如果您想要这样的更新频率,那么请使用 websockets 进行调查 【参考方案1】:您可以为您的行添加一个时间戳,并且只提取(并加载)自上次更新以来发生的额外行。
假设您在 00:01 加载了页面,然后您提取并附加(而不是加载)自 00:01 以来添加的行并更新时间戳。
这将解决删除选择的问题,因为它只会添加和加载额外的行,而不是在每次更新时重新加载整个表。
【讨论】:
我认为选择的问题是因为它会在每次加载时替换 DOM 元素 没错,用加载的数据替换整个元素,这就是为什么我建议使用 append 来代替。 但是追加会留下旧数据? 成功调用可用于将数据附加(或前置)而不是仅替换它。它没有正确记录在负载上,而是完整的信息在 $.ajax 页面上。还有一个肮脏的解决方案附加一个空 div 并在其中加载:$('#maintable').append( $('<div/>').load('urlwithnewrows.php') );
【参考方案2】:
最好的方法是使用 AJAX。服务器应该只发送更新字段的数据(最好是 JSON 格式),javascript 应该简单地替换所需字段的textContent
。
【讨论】:
以上是关于使用 mySQL 数据实时更新表的主要内容,如果未能解决你的问题,请参考以下文章