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+MYSQL的文章管理系统(二)
Oct 09 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
PHP制作万年历
Jan 07 PHP
php判断用户是否手机访问代码
Jun 08 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
CI框架集成Smarty的方法分析
May 17 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PDO::commit讲解
Jan 27 PHP
PHP反射学习入门示例
Jun 14 PHP
PHP session垃圾回收机制实例分析
Jun 28 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 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三维数组去重(示例代码)
2013/11/26 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
javascript时区函数介绍
2012/09/14 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
python sorted函数原理解析及练习
2020/02/10 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
统计员岗位职责
2013/11/14 职场文书
高中化学教学反思
2014/01/13 职场文书
国庆节演讲稿
2014/05/27 职场文书
物业管理专业求职信
2014/06/11 职场文书
品牌转让协议书
2014/08/20 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
社区元宵节活动总结
2015/02/06 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS