Phi*_*ses 6 php mysql ajax jquery codeigniter
嘿伙计们,凌晨3点36分,我需要精神上的提升.
简单的问题是,向数据库添加100个点的最简单/最快的方法是什么.请假设由于重复,错误数据等原因,所有写入都不起作用.
我正在尝试使用100个值更新数据库.
一旦我有一个好的数据,我需要将它添加到数据库,我使用一个名为updateDB的函数.
此函数只是将lat/lng坐标写入数据库.如果有重复或写入失败,我从php发送"错误",循环应继续收集数据,直到我有100个数据库点.这是我正在使用的功能.
cct用于xss预防,请忽略它,这很好用.
////more above this
if(100-completed > dispatched)
dispatched++;
updateDB(lat,lng);
/// more junk and then this function
function updateDB(lat,lng)
{
var cct = $("input[name=csrf_mysite]").val();
$.ajax({
type: "POST",
url: "/form",
data: {
'lat': lat,
'lng': lng,
'id_set': id_set,
'csrf_complexity': cct },
success: function(result) {
var obj = jQuery.parseJSON(result);
if( obj.status === "OK" )
{
completed++;
var marker = new google.maps.Marker(
{
icon: markerIcon,
position: new google.maps.LatLng(lat, lng),
map: map
});
$( "#progressbar" ).progressbar( "option", {
value: completed,
max: 100
});
$("#amount").text("Getting image " + completed + " of 100");
}
},
error: function(data){
//alert(data.responseText);
},
complete: function(data){
if(completed == 100)
window.location = "/start/curate";
dispatched--;
}
});
}
Run Code Online (Sandbox Code Playgroud)
此功能不起作用.所以任何想法为什么?
它应该工作简单.调用updateDB,直到它达到100个附加值,并且只有在不可能有额外调用的情况下才调用updateDB.调度没有正确递减,所以我假设每个事件都没有调用完成.
想法?或者任何其他方式来做这件事都很棒.
编写服务器端脚本以用数字进行响应 - 然后在第一个请求中发送 100 个数据点:
Browser Server
| |
|---> 100 data ---> |
|<- send 20 more <- |
| |
|---> 20 data ---> |
|<- send 1 more <- |
| |
|---> 1 data ---> |
|<- send 0 more <- |
| |
v v
Run Code Online (Sandbox Code Playgroud)
这样,您就不会遇到因在客户端计算服务器端处理了多少信息而产生的同步问题 - 服务器处理数据,排除重复项、格式错误等,并且服务器计算它需要什么。
客户端所要做的就是发送所有可以发送的信息,然后轮询服务器以了解还需要多少信息。此外,由于 Ajax 请求的开销,您希望一次发送多个点,但您不想发送超出实际需要的数量,因为这也是浪费。
希望这可以帮助。