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 相关文章推荐
一个基于PDO的数据库操作类
Mar 24 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 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实现与java 通信的插件使用教程
2019/08/11 PHP
php新建文件的方法实例
2019/09/26 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
js字符串转成JSON
2013/11/07 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
2020/04/21 Javascript
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
python tkinter实现屏保程序
2019/07/30 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
分享一个python的aes加密代码
2020/12/22 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
四川成都导游欢迎词
2014/01/18 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
交通事故调解协议书
2014/04/16 职场文书
社区义诊活动总结
2014/04/30 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
2016关于军训的心得体会
2016/01/11 职场文书
九年级英语教学反思
2016/02/15 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书