使用ajax从数据库中检索数据而不需要每x秒请求一次 [英] retrieving data from a database using ajax without requesting every x seconds

查看:35
本文介绍了使用ajax从数据库中检索数据而不需要每x秒请求一次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在阅读如何使用 XMLHTTPRequests 通过 JavaScript 从数据库中获取数据.

I have been reading up on how to use XMLHTTPRequests to grab data from a database via JavaScript.

但是,我注意到这些教程"中的每一个都使用一个间隔来每隔 x 秒检索数据,并且它似乎这对服务器来说会非常繁重(并且不必要);特别是考虑到有时这些查询根本不会返回任何内容.

However, I have noticed that every single one of these "tutorials" use an interval to retrieve data every x seconds, and it seems like this would be extremely taxing (and unnecessary) on the server; especially considering sometimes these queries would return nothing at all.

那么,FacebookTwitter 等网站是如何做到的?

So, how do websites such as Facebook and Twitter do it?

因为这样的事情(为了简单起见,我使用 jQuery):

Because something like this (I'm using jQuery for simplicity):

setInterval(function(){ // retrieve data every 5 seconds
    $.ajax({
        url: "datagrab.php",
        success: function(data){
            $("body").append(data);
        }
    });
}, 5000);

... 似乎有点过头了;特别是如果您有一个相当小的服务器(或数据上限)无法以该速率发出请求.

... seems a bit over the top; especially if you have a fairly small server (or data cap) that is unable to make requests at that rate.

干杯.

推荐答案

您可以使用 EventSource 不断地将数据流式传输到浏览器.

You can use EventSource to constantly stream data to browser.

const source = new EventSource("data.php");
// note, you can also set custom event handlers for named events
source.addEventListener("message", function(e) {
  // do stuff with `e.data`
});
// close event stream
// source.close();

 <?php 
 header("Content-Type: text/event-stream\n\n"); 
 header("Cache-Control: no-cache"); 
 // get, do stuf with `$data1`, `$data2`
 echo "data: $data1\n";
 echo "data: $data2\n\n";

这篇关于使用ajax从数据库中检索数据而不需要每x秒请求一次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆