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 09 PHP
令PHP初学者头疼十四条问题大总结
Nov 12 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
PHP实现多进程并行操作的详解(可做守护进程)
Jun 18 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
php实现数字补零的方法总结
Sep 12 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
laravel 数据验证规则详解
Oct 23 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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
PHP默认安装产生系统漏洞
2006/10/09 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
js中开关变量使用实例
2017/02/24 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
python fabric实现远程操作和部署示例
2014/03/25 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
Python实现二维数组输出为图片
2018/04/03 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
介绍下java.util.Arrays类
2012/10/16 面试题
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
意向协议书
2015/01/27 职场文书
2015年公司工作总结
2015/04/25 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
Python使用openpyxl模块处理Excel文件
2022/06/05 Python
python基础之//、/与%的区别详解
2022/06/10 Python