Mysql数据库里有3000条记录,现需先将其删除,再加入3000条记录,但是提交是以网页的方式,而且需要花费10分多钟,这对用户来说是不可忍受的,如何实现10条记录10条记录的完成,并向用户显示已完成多少?

解决方案 »

  1.   

    这么多条记录需要操作说明这个用户肯定很特殊,所以不可忍受其实是可以接受的,这样一般都是管理员之类的才这么操作的吧
    当然,你可以用ajax10条10条的操作,如果你直接用分页跳转的话,就没有提示了,会在浏览器一直跳转执行
      

  2.   

    没写过,只是想法,比如你先ajax1-10条,返回成功后继续执行11-20条数据,提示已经在执行11-20条数据啦,然后循环,直到数据执行完成
      

  3.   

    类似这个
    [code=javascript]
        function Creat(jjsortid){            
                $.ajax({
                    type: 'POST',
                    url: 'Ajax_JJ.php?Action=CreatJJ&jjsort_id='+jjsortid+'',
                    data: '',
                    dataType: 'html',
                    success: function(data, status) {
                        var jdata=eval("("+data+")");//转换为json对象
                        if (jdata.error != 'OK'&&jdata.error != 'CONTINUE') {
                        MsgBox(1, jdata.error, "");
                        }
                        else{
                           $("#c1_"+jjsortid+"").html(eval($("#c1_"+jjsortid+"").html())+eval(jdata.id));
                           $("#c2_"+jjsortid+"").html(eval($("#c2_"+jjsortid+"").html())-eval(jdata.id));
                           if(jdata.error=='CONTINUE')
                            Creat(jjsortid);
                        }
                        
                 }
                });
            }
      

  4.   

    function Process(){
    $count=count(RemoveTestList);
    echo "<Iframe src='jindu.php?id=/$count' width='200' height='25' scrolling='no' frameborder='0'></iframe> ";

    }jindu.php 里面部分代码(其实是个进度条,呵呵): $count= $_GET['id'];
    set_time_limit(0);
     $step = 0;
     
    for ($i = 0; $i < $count; $i++) {
       sleep(1); 
       $step+=10; 
       echo '<script> document.getElementById("jindu").style.width = "'.$step.'px"; </script>';
       flush(); 
     }
      

  5.   

    1 删3000条数据再插3000条需要10多分钟???你程序怎么写的?插数据之前有很复杂的逻辑来获取这些数据?
    2 你说的这种动态回显的效果,用ajax可以实现,也比较简单。
    3 还有一种方法也可以实现,是服务器分块(chunk response)响应的方式。这个首先apache的支持比较好,nginx上我试过也可以实现,但是有些麻烦,需要修改几个参数。这个操作除了需要web server的支持,不同浏览器上的可能也有区别。
    原理是这样的。http协议规定一个request只能有一个response。但其实服务器是否response,是受到web server的缓冲区限制。到达浏览器后,还会受到浏览器的缓冲区限制。