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
综合图片计数器
Oct 09 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
php写的AES加密解密类分享
Jun 20 PHP
php搜索文件程序分享
Oct 30 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
TP5框架请求响应参数实例分析
Oct 17 PHP
php传值和传引用的区别点总结
Nov 19 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 addslashes 函数详细分析说明
2009/06/23 PHP
php 可变函数使用小结
2018/06/12 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
JSONP基础知识详解
2017/03/19 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python3 Random模块代码详解
2017/12/04 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
python中return如何写
2020/06/18 Python
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
医药大学生求职简历的自我评价
2013/10/17 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
迎新晚会邀请函
2014/02/01 职场文书
班级旅游计划书
2014/05/03 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
检讨书格式
2015/05/07 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
时尚女魔头观后感
2015/06/04 职场文书
利用python进行数据加载
2021/06/20 Python