[英]What is a proper way to add listeners to new elements after using AJAX to get the html content? (jQuery, Javascript)
[英]What is the proper way of using JavaScript, jQuery and AJAX to avoid reaching CPU limits?
也许我认为以下脚本导致我服务器负载高,使我的网站宕机以及CPU达到限制。 有没有适当的方法来编码此脚本的变量和排列方式?
还有一点,我在这里使用SetTimeout()
因为我确实需要每2秒从Codeigniter PHP和MySQL从JSON文件获取数据。 还有其他方法可以正确设置此设置吗? 我该怎么做才能最小化服务器负载并避免达到Web主机的CPU极限?
<script>
var data1;
var data2;
var id = "1";
var url = '<?php echo base_url();?>index.php/site/get_products/';
products();
function products() {
$(document).ready(function () {
$.get(url + id, function (data) {
var obj = JSON.parse(data)
data1 = obj.product[0].data1;
data2 = obj.product[0].data2;
if (obj.product[0].data2 == "") {
document.getElementById("datap").innerHTML = "No data found";
} else {
document.getElementById("datap").innerHTML = data1 + data2;
}
});
});
setTimeout(products, 2000);
};
服务器端:(mycontroller.php)
public function get_product($id){
$this->db->select('*');
$this->db->from('product');
$this->db->where('id', $id);
$query = $this->db->get();
if($query->num_rows() > 0){
$data['product'] = $query->result();
}
echo json_encode($data);
}
在locate
函数中没有使用$(document).ready(function () {...}
您也将setTimeout
放置在function locate
之外
function locate() {
$.get(get_loc + v_id, function(data) {
var obj = JSON.parse(data)
longtitude = obj.vehicle[0].longtitude;
latitude = obj.vehicle[0].latitude;
if (obj.vehicle[0].longtitude == "") {
document.getElementById("coordinates").innerHTML = "No coordinates found in the database";
} else {
document.getElementById("coordinates").innerHTML = "Longtitude: " + longtitude + "<br>Latitude: " + latitude + " ";
}
});
};
setTimeout(locate, 2000);
与Cross聊天之后,我认为我们已经找到问题了。 他正在创建用于查找GPS坐标的Android地图,并将其发送到Web服务器上的PHP脚本。 PHP脚本使用车辆的ID(这是汽车追踪器)使用lat和Long来更新车辆的记录,以了解必须更新的记录。 然后,另一个PHP脚本读取数据库,并使用JS在地图上移动标记。 问题出在以下事实:Cross在Android App中使用计时器每2秒询问一次GPS位置,但是他在没有“计时器”的循环内调用Web服务器。 所以在伪代码中,他有这样的东西:
Every 2 sec, ask for GPS Location
Do
send Location to server
Loop
因此,即使GPS位置每隔2秒才更新一次,他仍连续不断地全速调用Web服务器...。这说明了CPU过载。 我建议克罗斯这样想
Get GPS location every 2 sec
Do
if Location has changed
send to server
endif
Loop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.