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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
php minixml详解
Jul 19 PHP
PHP UTF8编码内的繁简转换类
Jul 20 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
PHP实现合并discuz用户
Aug 05 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
Sep 21 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
浅谈PHP中关于foreach使用引用变量的坑
Nov 14 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
PHP实现文件上传操作和封装
Mar 04 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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/07/08 PHP
下载文件的点击数回填
2006/10/09 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
Python 迭代器工具包【推荐】
2016/05/06 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
django中send_mail功能实现详解
2018/02/06 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
python中return如何写
2020/06/18 Python
Python中return函数返回值实例用法
2020/11/19 Python
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
2015暑假假期总结
2015/07/13 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
MySQL 数据丢失排查案例
2021/05/08 MySQL