【问题标题】:ajax setInterval efficiencyajax setInterval 效率
【发布时间】:2014-02-01 12:54:21
【问题描述】:

我正在使用setInterval 运行ajax,以便尽可能接近实时(每秒)从数据库中检索数据。现在我从meeting_minutes_queries.php 中提取了少量数据,因此没有滞后或故障。我想将此代码扩展到同一页面上的多个 div 容器,以创建多个数据库连接。这似乎非常低效,甚至可能很危险。有没有更有效的方法来完成这个过程?

AJAX 代码:

setInterval(function(){
  function update_tb(){
    $.ajax({
      type: "POST",
      url: "meeting_minutes_queries.php",
      async: false,
      success: function(result){
        $(".slide_content1").fadeIn('slow').html(result);
      }
    }).responseText;
  }
  $(function(){
    update_tb();
  });
}, 1000);

提前感谢您的帮助。

【问题讨论】:

  • 你可以使用 node.js,它会极大地加速你的应用程序!
  • 考虑使用网络套接字。
  • 你真的应该只创建一个函数并使用 setTimout 递归调用它。不要使用 setInterval()
  • 您可以在ajax请求的回调中触发下一个请求(以防某些请求花费的时间比预期的长......)
  • 我真的只是想从数据库请求新数据。 web socket 或 node.js 会有这个功能吗?如果是这样,我在哪里可以找到此代码的示例,因为我不熟悉这种编码风格@jorge

标签: javascript php jquery ajax database


【解决方案1】:

是的,有。

您可以使用Long pollingWebSockets

通过慢速轮询,您运行一个请求,服务器将无限期地保持连接打开,直到它有话要说(例如,在 PHP 中睡眠很多,一旦您得到结果,回答并完成)。

使用网络套接字,您拥有更多可能性。

【讨论】:

    【解决方案2】:

    试试这个:

    $(function(){
      setInterval(function(){
        update_tb();
      }, 1000);
    
      function update_tb(){
        $.ajax({
          type: "POST",
          url: "meeting_minutes_queries.php",
          async: false,
          success: function(result){
            $(".slide_content1").fadeIn('slow').html(result);
          }
        }).responseText;
      }
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多