PHP进行批量任务处理不超时的解决方法


Posted in PHP onJuly 11, 2016

本文实例分析了PHP进行批量任务处理不超时的解决方法。分享给大家供大家参考,具体如下:

PHP批量任务处理

PHP在批量处理任务的时候会超时,其实解决方法很简单了,就是把任务分割,一次处理一部分,任务进度可以放在服务端也可以放在客户端,不是很复杂的话放在客户端,用js来处理就可以了.

客户端js回调处理

客户端处理的时候需要住一个地方,就是使用ajax处理的时候,ajax是异步的,使用for循环来处理的时候只是批量请求,这样任务量大的时候会直接DDOS服务器,所以需要等待回调函数返回,然后进行下一次的请求.

客户端例子

文件: 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);
     // 继续调用
     this.next();
    };
    // 请求成功
    var success = function(data){
     // 成功的逻辑
     console.log("success", data.id);
     // 继续调用
     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" class="Jids">1</td></tr>
 <tr><td><input type="checkbox" value="2" class="Jids">2</td></tr>
 <tr><td><input type="checkbox" value="3" class="Jids">3</td></tr>
 <tr><td><input type="checkbox" value="4" class="Jids">4</td></tr>
 <tr><td><input type="checkbox" value="5" class="Jids">5</td></tr>
 <tr><td><input type="checkbox" value="6" class="Jids">6</td></tr>
 <tr><td><input type="checkbox" value="7" class="Jids">7</td></tr>
 <tr><td><input type="checkbox" value="8" class="Jids">8</td></tr>
 <tr><td><input type="checkbox" value="9" class="Jids">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程序设计有所帮助。

PHP 相关文章推荐
PHP 函数执行效率的小比较
Oct 17 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
PHP中如何实现常用邮箱的基本判断
Jan 07 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
PHP7.0安装笔记整理
Aug 28 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
PHP判断密码强度的方法详解
May 26 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
php 命名空间(namespace)原理与用法实例小结
Nov 13 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
PHP封装的数据库保存session功能类
Jul 11 #PHP
php中array_column函数简单实现方法
Jul 11 #PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 #PHP
php进行ip地址掩码运算处理的方法
Jul 11 #PHP
php解析xml 的四种简单方法(附实例)
Jul 11 #PHP
php进程间通讯实例分析
Jul 11 #PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 #PHP
You might like
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
Python内置函数OCT详解
2016/11/09 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
2015年财务科工作总结范文
2015/05/13 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
Java 异步任务计算FutureTask
2022/04/28 Java/Android