php - 使用 ajax 向数据库添加恰好 100 个值

标签 php jquery mysql ajax codeigniter

将 100 个点添加到数据库的最简单/最快的方法是什么?请假设由于重复、错误数据等原因,所有写入都不会工作。

我正在尝试使用恰好 100 个值更新数据库。

一旦我有了一份好的数据,我需要将它添加到数据库中,我使用一个名为 updateDB 的函数。

此函数只是将纬度/经度坐标写入数据库。如果存在重复或写入失败,我从 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。 Dispatch 没有正确递减,所以我假设没有在每个事件上调用 complete。

想法?或者任何其他方式都很棒。

最佳答案

为什么不让服务器代码处理计数并只发送一个(或几个)查询?例如。首先构造一个包含 100 个数据点的数组,在单个查询中将数据发送到服务器,并让它响应它还需要多少个数据点,然后发回那么多数据点,然后再重复一次,直到得到 100 个数据点。

如果客户端获取每条数据的开销很低,获取不需要的数据也可以,那么一开始就发送(比如说)110。通过对故障率的一些了解,您应该能够轻松地对其进行优化。

您一次只能有(我相信)两个同步异步查询,无论如何,不​​管是否异步,都需要很长时间才能完成。我想不出有什么理由不尽可能多地对数据进行分组,并将查询数量减少到 1 个或少数几个。即使您仍然在服务器上运行 100 个数据库查询,与 HTTP 发布/响应的开销相比,这样做的时间也微不足道。

关于php - 使用 ajax 向数据库添加恰好 100 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5456035/

相关文章:

php - Pheanstalk触摸工作要求更多时间

php - 通过类链接的全局 PHP 函数

php - Behat Mink webdriver session 在套件中的每个功能之后被销毁

jquery - Infragistics Jquery 网格 onLoad

jquery - 使用 Sweet Alert 和 jquery 进行表单输入

php - 想在 laravel 上返回值 json

php - 在 php 构造函数中实现 try/catch block

javascript - jQuery:单选按钮值未清除

php - 登录脚本显示空白页

php - mysql 查询两个表,为每个 session 检索消息