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实现的简单压缩英文字符串的代码
Apr 24 PHP
开源SNS系统-ThinkSNS
May 18 PHP
对象失去焦点时自己动提交数据的实现代码
Nov 06 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
php构造函数实例讲解
Nov 13 PHP
php中的静态变量的基本用法
Mar 20 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
laravel 使用auth编写登录的方法
Sep 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
JavaScript函数详解
2014/11/17 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
实现vuex原理的示例
2020/10/21 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
Python3实现从文件中读取指定行的方法
2015/05/22 Python
Python3.6正式版新特性预览
2016/12/15 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
python写程序统计词频的方法
2019/07/29 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
领导的自我鉴定
2013/12/28 职场文书
八年级音乐教学反思
2014/01/09 职场文书
项目考察欢迎辞
2014/01/17 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
教师求职自荐信范文
2015/03/04 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
AI:如何训练机器学习的模型
2021/04/16 Python
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript