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 相关文章推荐
smarty 原来也不过如此~~呵呵
Nov 25 PHP
PHP 图片文件上传实现代码
Dec 29 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
PHP 登录记住密码实现思路
May 07 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
php防止SQL注入详解及防范
Nov 12 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
PHP copy函数使用案例代码解析
Sep 01 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/10/09 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
php常用数组函数实例小结
2016/12/29 PHP
PHP 图片处理
2020/09/16 PHP
JS模拟多线程
2007/02/07 Javascript
一个可以显示阴历的JS代码
2007/03/05 Javascript
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
python中threading超线程用法实例分析
2015/05/16 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
用python对oracle进行简单性能测试
2020/12/05 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
毕业生个人求职信范文分享
2014/01/05 职场文书
群教班子对照检查材料
2014/08/26 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
openstack中的rpc远程调用的方法
2021/07/09 Python