php+ajax导入大数据时产生的问题处理


Posted in PHP onJune 11, 2014

遇到的问题就从先到后的一一说吧。

问题1 按照我最初的想法,先上传文件再读取文件。这里问题就来了,当文件较大的时候上传较慢,导致客户看到的操作一直处于等待状态,不人性化。

处理办法:我是这样做的,大神有更好的办法,求介绍。我先把文件上传上去,然后把文件存到一个特定的文件夹就叫 import吧   ,然后返回一个这个文件名字。这样就确保了文件是上传成功的。并且我可以在他返回名字的这一步用js  给客户一个提示。然后就是ajax去请求php读取文件,插入数据库。可是问题来了。

问题2 当我用ajax去请求php读取文件并插入数据库的时候,遇到一个问题,就是ajax请求总是在1min的时候,断掉。我一想 ,这应该是php的最大执行时间max_execution_time的原因吧,结果我修改为300秒。还是这样,那我就认为会不会是apache的 最大get时间max_input_time呢,我就在代码加一个 ini_set  结果,用ini_get   查看max_input_time,用ini_set设置无效,还是60秒,在网上查了很多资料,还是不知道为啥。有大神知道的,请给我回复下。菜鸟先谢过了。那没办法,我只能去服务器把php.ini配置修改了。经理说不让修改的,为了测试,偷偷改了--最后修改回来了。修改之后,测试,还是不行。还是到一分钟 就执行超时。真的很纳闷。不知道什么原因。求指教。那没办法。

这种办法行不通了,对一个5m的文件只能分行读取了。然后就是对代码的一通修改,分行读取是这样操作的,先ajax请求,然后每次读取2000条  然后对这2000条数据进行处理,插入数据库(文章最后介绍一个好用的分行读取函数)。然后每次ajax执行完,返回一个状态符,和本次读取到的行数,然后下次接着读。知道最后读取完。这中间还遇到一个问题:就是当我对每一行数据进行查重的时候遇到的,是这样的,我对得到的内容进行循环,然后查一下每行是否存在,当我判断$count是否大于0 的时候,当已存在的时候,我用continue,执行下一次循环。但是当我在导入10000条的时候,总是在8000条的时候报错说 服务器内部错误。很闷,不解问什么,结果只能用if  else代替了。纳闷。一个小提醒:插入数据库的时候 不要一条一条的插入,最好这样 inset  into  aaa(`xx`,`xxx`)values('111','111'),('222','222')。这样 速度会快很多。

php+ajax导入大数据时产生的问题处理

行号读取函数,SplFileObject这个类库真的很好用推荐。有知道我的问题的,求大神指教。

function getFileLines($filename, $startLine, $endLine, $method = 'rb'){
      $content = array();
      $filename = DATA_PATH.DS.'import' . DS . $filename;
      $count = $endLine - $startLine;
      $fp = new SplFileObject($filename, $method);
      $fp->seek($startLine); // 转到第N行, seek方法参数从0开始计数
      for ($ii = 0; $ii <= $count; ++$ii) {
            $content[] = $fp->current(); // current()获取当前行内容
            $fp->next(); // 下一行
      }
      return array_filter($content); // array_filter过滤:false,null,''
}
PHP 相关文章推荐
php桌面中心(三) 修改数据库
Mar 11 PHP
php 静态变量与自定义常量的使用方法
Jan 26 PHP
php 数组二分法查找函数代码
Feb 16 PHP
PHP初学者最感迷茫的问题小结
Mar 27 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php字符串分割函数explode的实例代码
Feb 07 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
基于PHPExcel的常用方法总结
Jun 13 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 #PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 #PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 #PHP
PHP定时更新程序设计思路分享
Jun 10 #PHP
CI(CodeIgniter)框架配置
Jun 10 #PHP
教你如何用php实现LOL数据远程获取
Jun 10 #PHP
PHP面向对象教程之自定义类
Jun 10 #PHP
You might like
第1次亲密接触PHP5(2)
2006/10/09 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
python 多线程应用介绍
2012/12/19 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
深入理解Django中内置的用户认证
2017/10/06 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python3实现多线程聊天室
2018/12/12 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
python pygame实现五子棋小游戏
2020/10/26 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
keras输出预测值和真实值方式
2020/06/27 Python
简述 Python 的类和对象
2020/08/21 Python
Django中使用Celery的方法步骤
2020/12/07 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
仓库规划计划书
2014/04/28 职场文书
公司建议书怎么写
2014/05/15 职场文书
运动会广播稿200字
2014/10/18 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL