gpt4 book ai didi

javascript - 自动检测数据库表是否发生变化

转载 作者:行者123 更新时间:2023-12-03 11:25:09 28 4
gpt4 key购买 nike

我有一个小型应用程序,用户可以在其中将任务拖放到 HTML 表中。

当用户删除任务时,我调用一个名为 update_task 的 JavaScript 函数:

function update_task(user_id, task_id, status_id, text, uiDraggable, el) {
$.get('task_update.php?user_id='+user_id+'&task_id='+task_id+'&status_id='+status_id+'', function(data) {
try {
jsonResult = JSON.parse(data);
} catch (e) {
alert(data);
return;
};

在task_update.php中我得到了我的值; user_idtask_idstatus_id 并执行 PDO UPDATE 查询来更新我的数据库。如果查询正确执行,我

echo json_encode ( array (
'success' => true
) );

然后我将任务附加到正确的表格单元格

if(typeof jsonResult.success != 'undefined') {
$(uiDraggable).detach().css({top: 0,left: 0}).appendTo(el);
}

这一切都运行良好。但是,我开始意识到,当两个或更多人同时做出改变时,这是一个问题。例如,如果我使用 2 个浏览器进行测试,并且在两个浏览器上都打开了站点:那么,如果我在 browser1 上移动任务,我将必须在 browser2 上手动刷新页面才能看到更改。

所以我的问题是;如果对数据库表进行了更改,如何使我的应用程序自动解除技术?以及如何在不刷新页面的情况下更新 HTML 表。

我已经研究了一些更新页面的时间间隔,但这对我来说不起作用,因为我真的不想强制浏览器刷新。例如,用户还可以在灯箱 iframe 中创建新任务,因此,如果他们在尝试创建新任务时刷新浏览器,这对他们来说会非常烦人。

那么,是的,我使用的最佳实践是什么?

最佳答案

使用Redis及其 publish/subscribe用于在 PHP 应用程序和轻量级 Websocket 服务器之间实现消息总线的功能(Node.js 是一个不错的选择)。

当 PHP 修改数据时,它还会在 Redis 中发出一个事件,表明某些数据已更改。

当websocket客户端连接到Node.js服务器时,它会告诉服务器想要监控哪些数据,然后,一旦接收到Redis事件并且事件数据与客户端监控的数据匹配,就通知客户端通过 websocket,然后刷新页面。

看看this question答案详细解释了所有这些,包括您可以重用的示例代码。

关于javascript - 自动检测数据库表是否发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26954252/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com