如果我的 mysql 数据库中的数据发生更改,我如何触发我的 AJAX

Posted

技术标签:

【中文标题】如果我的 mysql 数据库中的数据发生更改,我如何触发我的 AJAX【英文标题】:how can i trigger my AJAX if my data in my mysql database change 【发布时间】:2020-02-09 03:57:29 【问题描述】:

我在刷新 span 标签中的数据时遇到问题。我需要每 5 秒刷新一次 span 标签,因为我的数据库中的数据是动态的,它总是在变化。

现在我在我的 AJAX 中使用 setInterval

setInterval(get_value, 5000);

  function get_value()
    $.ajax(
      url: base_url + ""
      type: "GET",
      dataType: "json",
      success: function(data) 
           //refresh the span tag
      ,
      error: function(jqXHR, textStatus, errorThrown) 
        alert(errorThrown.message);
      
    );
  

但我认为这不是正确的方法,因为反应非常不好。有什么方法可以让我使用 Codeigniter 做得更好吗?目前我的想法是这样的,它正在发挥作用,我只是担心我的想法。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您最好的选择是 Nodejs 和 Socket.Io

好吧,尽管你想用 php 和 AJAX 构建它, 如果你真的这样做的话,我会高度并且会一直高度地使用 Node.jssocket.Io 关心更具可扩展性和性能的应用程序。

Node.js 是为类似这样的东西而设计的,不像

AJAX 使用与 Node.js 相关的昂贵的 HTTP 请求。 Nodejs 的另一个优点是它的速度非常快 做多种 I/O 并且是异步的。因此,Node.js 进程是非阻塞的,这有助于使其更快。

Node.js 允许以低内存使用和延迟缓解处理许多持久连接 非常适合处理所有聊天和实时客户消息和呼叫。

有一个用于处理 Nodejs 的库,名为 Socket.Io。这 socket.io 是对 websockets 的抽象,它允许在节点服务器之间传递消息 和网络浏览器

看看吧。他们很有趣。以下是他们的源链接

https://nodejs.org/en/

http://socket.io/

【讨论】:

【参考方案2】:

使用 Pusher 将您的数据从服务器端广播到客户端。它使用 websocket 技术。如果更新了特定页面,则数据将发送到推送服务器,并且可以使用 javascript 从您的客户端(显示图表的位置)捕获该数据。

如果你使用 ajax,它会比使用 pusher 消耗更多的带宽。

不喜欢 pusher 的可以选择 Redis、firebase、pubnub。

【讨论】:

以上是关于如果我的 mysql 数据库中的数据发生更改,我如何触发我的 AJAX的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询的时候怎么解决脏读,幻读问题

使用 SQL 命令更改 MySQL 数据库中的 ID 值

使用 sqitch 中的 mysql 查询验证表不存在

如果一个元素正在被动画,我如何用 jQuery 找出?

如果中间发生页面更改,AJAX 请求/响应的数据会发生啥情况

删除多个单元格时不会发生 Excel 工作表更改事件