我一直在阅读如何使用XMLHTTPRequests
通过 JavaScript 从数据库中获取数据。
但是,我注意到这些"教程" 中的每一个都使用间隔来检索每个 x 的数据>秒,似乎这会对服务器造成极大的负担(以及不必要的);特别是考虑到有时这些查询根本不会返回任何内容。
那么, Facebook 和 Twitter 等网站如何做到这一点?
因为这样的事情(我为了简单而使用 jQuery ):
setInterval(function(){ // retrieve data every 5 seconds
$.ajax({
url: "datagrab.php",
success: function(data){
$("body").append(data);
}
});
}, 5000);
...似乎有点过头了;特别是如果你有一个相当小的服务器(或数据上限)无法以该速率发出请求。
干杯。
答案 0 :(得分:0)
您可以使用EventSource
不断将数据流式传输到浏览器。
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";