`
远去的渡口
  • 浏览: 473545 次
  • 性别: Icon_minigender_2
  • 来自: 上海转北京
社区版块
存档分类
最新评论

php下载15万条数据的csv文件的解决方案

    博客分类:
  • PHP
阅读更多

今天来总结一下解决了下载16万条数据到csv文件的问题。主要是消费报表,用于财务对账,需要下载成excel文件,我们是下载成.csv文件,遇到数据量大的商家,一个月的消费数据超过15万条,经常就下载进度到99%卡住 ,其实后台已经报错500或者504。

 

今天彻底解决了下载15万8千多条数据不成功的问题,当然之前还出现过内存溢出的问题,后来找到瓶颈,优化了代码,解决了内存溢出的问题。

以前的代码是将数据库取的2万条数据没按分页取,直接一下子取出来,然后将数据拼装成csv文件所需要的整块的data,也就是不是逐行写入,第一次浪费内存是在将数据存放在array中,第二次浪费内存是将数据拼装成array再往csv文件中写,所以内存溢出。优化方案是扩大php内存,然后优化代码,php默认的内存128M太小,相对于下载20w条数据的业务来说,所以内存扩大到1G。代码优化方案:将取数据改成分页取,每10000条取一次,然后foreach这一万条数据,一边拼装一边往csv文件中写,fputcsv($fp, $row); 这样优化以后, 下载8万条数据不会报内存溢出。

 

将下载这个特殊的action的内存扩大,

 ini_set('memory_limit', '1G');//将内存最大限制改为1G
 

 

之后就不再出现内存溢出了,但是数据量在11万条以上时,仍然下载不成功,查日志发现是PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /xx/xx 目录,所以解决办法是在这个下载的action里前面加上一句:

       set_time_limit(0);//不设置超时时间

 然后再执行下载,发现php里不再报错,但是页面端返回504超时。在页面的response里能看到提示的是nginx报错,去nginx日志里查,果然有Fatal的错误:

2017/10/31 15:25:03 [error] 15639#0: *696311 upstream timed out (110: Connection timed out) 。

然后找到运维同事,帮忙修改一下服务器nginx的配置,反向代理超时,下载15万8千多条数据成功。

修改配置就是:

NGINX反向代理的超时报错,解决方法:

        server {
    listen *:80;

        location ~ .*\.(php|php5)?$
        {
            fastcgi_pass   127.0.0.1:9001;
            fastcgi_index  index.php;
            fastcgi_read_timeout 200;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
    }

 

 生效的主要就是那个fastcgi_read_timeout时间。改成了200,测试下载158500条数据没问题。

 

分享到:
评论

相关推荐

    百万数据csv文件,用来做程序测试

    百万数据csv文件,用来做程序测试

    CSV文件数据抽取

    CSV文件(Comma Separated Values)是一种常见的数据存储格式,广泛用于数据交换和数据分析任务。它的特点是使用逗号作为字段分隔符,每一行代表一个记录,每列数据对应一个特定的属性。在本场景中,“CSV文件数据...

    获取雅虎股票数据csv文件

    从雅虎金融上面自动下载csv文件,供量化和分析使用 修改save_path为自己的本地地址,输入股票代码,即可下载。

    二手车交易价格数据集40w数据csv格式文件+数据集介绍.zip

    该数据来自某交易平台的二手车交易记录,总数据量超过40w,...为了保证比赛的公平性,将会从中抽取15万条作为训练集,5万条作为测试集A,5万条作为测试集B,同时会对name、model、brand和regionCode等信息进行脱敏。

    各种csv格式的数据集

    CSV文件以纯文本形式存储数据,每一行代表一条记录,各字段之间由逗号分隔。有时,如果字段内含有逗号,会使用引号进行包围。这种格式使得CSV文件可以被多种数据分析工具,如Excel、Python的Pandas库、R语言等轻松...

    PHP数据导出成csv

    CSV文件是以逗号分隔的数据值,每一行代表一条记录,每个字段之间用逗号隔开。如果字段中包含逗号或其他特殊字符,通常会用双引号括起来。例如: ``` "姓名","年龄","城市" "张三",30,"北京" "李四",25,"上海" ``` ...

    java使用jdbc将数据库数据导出到csv文件.pdf

    Java 使用 JDBC 将数据库数据导出到 CSV 文件 Java 是一种广泛使用的编程语言,它提供了多种方式来处理数据库数据,而 JDBC(Java Database Connectivity)是 Java 中连接数据库的标准 API 之一。将数据库数据导出...

    C#数据存储到本地CSV文件Demo

    本示例“C#数据存储到本地CSV文件Demo”聚焦于如何使用C#来处理CSV(逗号分隔值)文件,这种文件格式常用于数据交换,因为它简单且易于读写。CSV文件以其文本格式存储表格数据,每行代表一行记录,列之间通过逗号...

    csv文件下载(人员信息.txt)

    由于在学习numpy数据分析的时候没有csv类型文件,又懒得自己一个个敲字,便想来csdn里随便下载一个。然而......居然要钱啊!!!!!!!我没钱,所以自己写了个,我不要你们的钱,麻烦各位拿资源的时候吱一声,这是...

    纯js生成并下载CSV文件

    纯JavaScript实现生成并下载CSV文件,前端竟然可以生成CSV文件,感兴趣的可以看下如何生成CSV文件,并且下载。

    php记取csv文件

    在PHP中处理CSV(Comma Separated Values)文件是一项常见的任务,特别是在数据导入、导出或数据分析场景下。CSV文件以其简洁的格式和广泛的兼容性而受到青睐。本篇文章将详细探讨如何使用PHP来读取和操作CSV文件,...

    读取CSV文件部分数据并保存—保证可用

    在这个场景下,我们关注的是如何从CSV(Comma Separated Values)文件中读取特定数据,并将其保存到TXT文件中。CSV是一种常见的文件格式,用于存储表格数据,如电子表格或数据库,以纯文本形式方便交换。下面将详细...

    beijing-CSV格式天气数据.zip

    标题中的"beijing-CSV格式天气数据.zip"表明这是一个压缩文件,其中包含了关于北京的天气数据,而数据是以CSV(Comma-Separated Values)格式存储的。CSV是一种常见的数据交换格式,它允许用户用逗号分隔的方式来...

    点云数据(csv格式的文件)

    本例中提供的"点云数据.csv"文件包含了x,y,z三个坐标轴的数值,分别代表点在三维空间中的位置。每一行数据代表一个点,多行数据组合起来就形成了一个三维形状,这里是一个大象的形状。通过解析并加载这些数据,...

    java读取csv文件并将读取的数据写入新生成的csv文件

    在我们需求中需要读取一个csv文件的数据,但是只有旧的csv的几列数据再新写入一个csv文件,而且在旧的数据有空的数据,需要判断旧的csv的空值。可能写的存在不完善!但是应用的需求里面还是能用的

    java实现csv导出千万级数据实例

    本实例提供的解决方案可能是利用流式处理(Streaming)或者迭代器(Iterator)来逐条读取数据库中的数据,然后将每条数据转化为CSV格式并写入文件。这样,内存只需要保持较小的数据量,避免了一次性加载所有数据导致...

    php生成csv文件

    在PHP中生成CSV文件是一项常见的任务,特别是在数据导出、报表生成或数据分析的场景下。CSV(Comma Separated Values)格式是一种通用的数据交换格式,因其简单性和易读性而广受欢迎。以下将详细介绍如何使用PHP来...

    读取csv文件中指定行列的数据

    在IT行业中,处理数据是日常任务之一,而CSV(Comma Separated Values)文件因其简单易用、跨平台兼容性好而广泛应用于数据交换。本教程将深入探讨如何使用Java在Eclipse集成开发环境中读取CSV文件中的指定行和列...

    js生成csv文件下载

    js生成csv文件下载

    超市销售数据分析.csv

    数据挖掘、数据统计、数据库应用甚至练习表格操作均可,CSV格式绿色环保,可转文本可转表格,易于操作,4.2w条数据,来源于生活,更便于统计,更容易发现数据规律(我自己只找过两三个指标)。 数据字段:顾客编号 ...

Global site tag (gtag.js) - Google Analytics