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类中Static方法效率测试代码
Oct 17 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 PHP
Yii+upload实现AJAX上传图片的方法
Jul 13 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
Apr 18 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
YII2 全局异常处理深入讲解
Mar 24 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
thinkPHP查询方式小结
2016/01/09 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
利用python实现数据分析
2017/01/11 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
Django REST framework内置路由用法
2019/07/26 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
keras topN显示,自编写代码案例
2020/07/03 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
课改先进个人汇报材料
2014/01/26 职场文书
写自荐信的注意事项
2014/03/09 职场文书
初一学生评语大全
2014/04/24 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
教师师德工作总结2015
2015/07/22 职场文书
校园广播稿范文
2015/08/19 职场文书