嘿伙计们,凌晨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--; } }); }
此功能不起作用.所以任何想法为什么?
它应该工作简单.调用updateDB,直到它达到100个附加值,并且只有在不可能有额外调用的情况下才调用updateDB.调度没有正确递减,所以我假设每个事件都没有调用完成.
想法?或者任何其他方式来做这件事都很棒.
编写服务器端脚本以响应图 – 然后在第一个请求中发送了100个数据点:
Browser Server | | |---> 100 data ---> | |<- send 20 more <- | | | |---> 20 data ---> | |<- send 1 more <- | | | |---> 1 data ---> | |<- send 0 more <- | | | v v
就像你在客户端计算在服务器端处理了多少信息所产生的那种同步问题一样 – 服务器处理数据,排除重复数据,格式错误等,以及服务器计算它需要的东西.
客户端所要做的就是发送所有内容并轮询服务器以获取更多需求.此外,由于Ajax请求的开销,您希望一次发送多个点,但您不希望发送比实际需要更多的内容,因为这也是浪费.
希望这可以帮助.