我需要检查数据库中是否有特定状态的修改。为了实时完成,我想每1秒发送一次Ajax Post以检查MySQL数据库是否有一些修改。
但我对表现有疑问。该页面可能会持续数小时。然后,我不知道每一秒都做一个好主意,一个" SELECT QUERY"在数据库中。
有人知道是否有一些问题让页面打开几个小时,每秒发送一次jjax帖子,检查MySQL数据库(选择查询)并用结果更改页面(当状态修改时)?
PS:(1)无法使用websocket。 (2)我使用PHP和MySQL。 (3)服务器是运行XAMPP的Windows。
代码是(它有效):
function status_check(){
var AJAX_URL = $('#AJAX_URL').val();
setTimeout(function(){
var body = $('body');
var ss = body.attr('data-step');
var formData = {
ss: ss,
a: 'cn'
}
$.ajax({
type: 'POST',
url: AJAX_URL,
data: formData,
dataType: "json",
success: function(data){
// change the HTML with the returned data if has modification
},
error: function(xhr, status, thrown){
console.log(xhr);
}
});
status_check();
}, 1000);
}
$(document).ready(function(){
status_check();
});
答案 0 :(得分:0)
这种做法称为短轮询,在客户端请求和数据库查询中资源密集。
正如您已经提到的,理想的解决方案可能是websockets,但只有PHP,这是不可能的。
另一种方法可能是长轮询。使用长轮询,客户端 - 服务器连接将保持打开状态,直到响应可用。在服务器上看起来有点像那样。
do {
$newData = getNewData();
if($newData) {
echo $newData;
} else {
sleep(1);
}
} while (!$newData);