PHP進行批量任務處理不超時的解決方法

字號:


    本文實例分析了PHP進行批量任務處理不超時的解決方法。分享給大家供大家參考,具體如下:
    PHP批量任務處理
    PHP在批量處理任務的時候會超時,其實解決方法很簡單了,就是把任務分割,一次處理一部分,任務進度可以放在服務端也可以放在客戶端,不是很復雜的話放在客戶端,用js來處理就可以了.
    客戶端js回調處理
    客戶端處理的時候需要住一個地方,就是使用ajax處理的時候,ajax是異步的,使用for循環(huán)來處理的時候只是批量請求,這樣任務量大的時候會直接DDOS服務器,所以需要等待回調函數(shù)返回,然后進行下一次的請求.
    客戶端例子
    文件: index.html
    <!DOCTYPE html>
    <html>
    <head>
     <title></title>
     <script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
     <script type="text/javascript">
     $(function(){
      $("#Jidsall").click(function(){
       $(".Jids").prop("checked", this.checked);
      });
      $("#btn_request").click(function(){
       // 任務對象
       var task = {};
       // 任務列表
       task.list = $(".Jids:checked").toArray();
       // 當前任務
       task.i = 0;
       // 下一個請求
       task.next = function() {
        if (this.i >= this.list.length) {
         // 任務完成
         this.done();
         return;
        }
        var i = this.i;
        // 請求失敗
        var error = function(data){
         // 失敗的邏輯
         console.log("error", data.id);
         // 繼續(xù)調用
         this.next();
        };
        // 請求成功
        var success = function(data){
         // 成功的邏輯
         console.log("success", data.id);
         // 繼續(xù)調用
         this.next();
        };
        $.ajax({
         context: this,
         method: "post",
         url: "do.php",
         data: {id:this.list[i].value},
         error: error,
         success: success,
         dataType: "json"
        });
        this.i++;
       };
       // 完成請求
       task.done = function() {
        console.log("done");
       };
       // 請求
       task.next();
      });
     });
     </script>
    </head>
    <body>
    <table>
     <tr><td><input type="checkbox" id="Jidsall">all</td></tr>
     <tr><td><input type="checkbox" value="1">1</td></tr>
     <tr><td><input type="checkbox" value="2">2</td></tr>
     <tr><td><input type="checkbox" value="3">3</td></tr>
     <tr><td><input type="checkbox" value="4">4</td></tr>
     <tr><td><input type="checkbox" value="5">5</td></tr>
     <tr><td><input type="checkbox" value="6">6</td></tr>
     <tr><td><input type="checkbox" value="7">7</td></tr>
     <tr><td><input type="checkbox" value="8">8</td></tr>
     <tr><td><input type="checkbox" value="9">9</td></tr>
     <tr><td><input type="button" id="btn_request" value="請求"></td></tr>
    </table>
    </body>
    </html>
    PHP處理批量任務的例子 服務端例子
    文件: do.php
    <?php
    sleep(3);
    if ($_POST["id"] == 5) {
     http_response_code(500);
     exit();
    }
    echo json_encode($_POST);
    希望本文所述對大家PHP程序設計有所幫助。