zoukankan      html  css  js  c++  java
  • php处理数据库数据,每处理一个数据返回客户端显示当前状态的方法。

    php处理大量数据,每处理一个数据返回客户端显示当前状态的方法。

    类似于dedecms生成静态页

    想法:

    1. 客户端发送请求
    2. 服务器端接受请求,开始统计所需处理的数据量
    3. 将所需处理数据按一定规则排列,发送到服务器处理端
    4. 服务器处理端处理了第一个数据,将处理结果经过一定处理后发送给客户端
    5. 客户端接收到结果,自动将处理结果显示并发送到服务器
    6. 服务器接收到处理结果 将它转发到服务器处理端
    7. 处理端继续处理结果...
    8. 循环4-7步骤,直到处理完毕

    实验过程:

    1.创建数据库和表

    create databases handle;
    
    create table user(
    
    id int unsigned not null auto_increment primary key,
    
    name varchar(8),
    
    sex tinyint(1) default '1',
    
    score int not null,
    
    state tinyint(1)
    
    );

    2.向表中添加数据(不示例)

    3.创建index.html客户端,a.php服务端1,b.php服务端2

    Index.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>客户端</title>
    </head>
    <body>
        
        <button onclick="send('a.php?state=0')">开始请求</button>
    
        <div style="position: fixed; 500px;height: 300px;top: 100px;background: gray">
            <span style="color: white;font-size: 20px;"></span>
        </div>
        <script type="text/javascript" src="./jquery-1.10.2.min.js"></script>
        <script type="text/javascript">
    //创建一个模态框
    function display(value){
        $('span').html(value);
    }
    
    
    //ajax
    function send(dizhi){
        $.ajax({
           type: "get",
           url: dizhi,
           success: function(msg){
                   var arr=JSON.parse(msg);
                   console.log(arr);
                   
                //alert(arr.value);
                var tishi="已经处理 "+arr.now +"个,共"+arr.all+"";
                display(tishi);
    
                if(arr.now!=arr.all){
                    send("a.php?now="+arr.now+"&all="+arr.all);
                }else{
                    alert("完成!");
                }
           }
        });
    }
        </script>
    </body>
    </html>

    a.php:

    <?php
        require('./dbconfig.php');
        $link=mysql_connect(HOST,USER,PASS) or die('数据库链接失败');
        mysql_select_db(DBNAME);
    /*
    查询数据
        $sql="select * from user";
        $result=mysql_query($sql);
        $row=mysql_fetch_assoc($result);
        var_dump($row);
    */
    /*
    循环插入
    for($i=3;$i<=100;$i++){
        $sql= "insert into user(name,score,state) values('z".$i."',".$i.",1)";
        mysql_query($sql);
    }
    */
    
    /*查询需要处理的数据总数*/
    //isset($_GET['state'])?$_GET['state']:0;
    
    if(isset($_GET['state'])){
        $sql="select count(*) from user";
        $result=mysql_query($sql);
        $all=mysql_result($result,0);
        $now=0;
        header("Location: b.php?all={$all}&now=0");
    }else{
        header("Location: b.php?all={$_GET['all']}&now={$_GET['now']}");
    }
    
    /*返回当前处理的数据*/

    b.php:

    <?php
        require('./dbconfig.php');
        $link=mysql_connect(HOST,USER,PASS) or die('数据库链接失败');
        mysql_select_db(DBNAME);
    
    
    /*返回当前处理的数据*/
    //$id=$_GET['id'];//获取将要处理的id
        $now=$_GET['now'];//已经处理的个数
        $all=$_GET['all'];//总共要处理的个数
    
        $sql="select score from user limit {$now},1";
        $result=mysql_query($sql);
        $value=mysql_result($result, 0);
        $now++;
        $arr=array(
            'now'=>$now,
            'all'=>$all,
            'value'=>$value
        );
    
    //print_r($arr);
        echo json_encode($arr);

    dbconfig.php:

    <?php
    	define('HOST','127.0.0.1');
    	define('USER', 'root');
    	define('PASS','root');
    	define('DBNAME','handle');
    

    以上是全部~

  • 相关阅读:
    js localtion.href 数据传输
    java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 找不到jar包的问题,路径问题
    java 深度拷贝 复制 深度复制
    解决java在对MySQL插入数据时出现乱码问题
    python最大最小距离算法贴近度评价法
    java 连接数据库报错:Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '
    java map 转 json 自编封装
    java 连接MySQL的代码
    在前端发起ajax遇到问题
    java map转json servlet response
  • 原文地址:https://www.cnblogs.com/zjhblogs/p/5190705.html
Copyright © 2011-2022 走看看