-
使用setTimeout避开web导出文件超时
2019-06-27 16:20:20今天接到需求说需要给web前端分页加到10000,并且能导出的需求,然后想当然的改了分页,然后跑起来就报了dubbo的错 java.io.IOException: Data length too large: 8843379, max payload: 8388608, channel: Netty...今天接到需求说需要给web前端分页加到10000,并且能导出的需求,然后想当然的改了分页,然后跑起来就报了dubbo的错
java.io.IOException: Data length too large: 8843379, max payload: 8388608, channel: NettyChannel 。。。。。
然后找了些方法,测试后只有这种有效
<dubbo:protocol name="dubbo" port="${dubbo.port}" payload="38000000"/>
在xml配置中加入payload的设置,默认8388608是8M,再跑查询没问题了,但是导出又出现新问题,之前的导出方式前端js
window.location.href
但是因为数据量大后台构建excel时间过长导致超时,最终通过
setTimeout(function() { window.location.href = prefix + "/exportBook"}, 1000 );
解决超时的问题,很奇怪为什么 setTimeout能解决超时问题,这货不是一个定时执行的api吗?
在MDN查了一下,了解到JavaScript 的并发模型基于“事件循环”
事件循环 之所以称之为事件循环,是因为它经常按照类似如下的方式来被实现: while (queue.waitForMessage()) { queue.processNextMessage(); } 如果当前没有任何消息,queue.waitForMessage() 会同步地等待消息到达。 "执行至完成" 每一个消息完整的执行后,其它消息才会被执行。这为程序的分析提供了一些优秀的特性,包括:一个函数执行时,它永远不会被抢占,并且在其他代码运行之前完全运行(且可以修改此函数操作的数据)。这与C语言不同,例如,如果函数在线程中运行,它可能在任何位置被终止,然后在另一个线程中运行其他代码。 这个模型的一个缺点在于当一个消息需要太长时间才能处理完毕时,Web应用就无法处理用户的交互,例如点击或滚动。浏览器用“程序需要过长时间运行”的对话框来缓解这个问题。一个很好的做法是缩短消息处理,并在可能的情况下将一个消息裁剪成多个消息。 添加消息 在浏览器里,当一个事件发生且有一个事件监听器绑定在该事件上时,消息会被随时添加进队列。如果没有事件监听器,事件会丢失。所以点击一个附带点击事件处理函数的元素会添加一个消息,其它事件类似。 函数 setTimeout 接受两个参数:待加入队列的消息和一个延迟(可选,默认为 0)。这个延迟代表了消息被实际加入到队列的最小延迟时间。如果队列中没有其它消息,在这段延迟时间过去之后,消息会被马上处理。但是,如果有其它消息,setTimeout 消息必须等待其它消息处理完。因此第二个参数仅仅表示最少延迟时间,而非确切的等待时间。
注意这句话 “函数 setTimeout 接受两个参数:待加入队列的消息和一个延迟(可选,默认为 0)。这个延迟代表了消息被实际加入到队列的最小延迟时间。如果队列中没有其它消息,在这段延迟时间过去之后,消息会被马上处理。但是,如果有其它消息,setTimeout 消息必须等待其它消息处理完”;
通过setTimeout加入进去的动作会被加入到运行时的消息队列中,当前消息未执行完是不会处理其他消息的,也就是说他是串行的相当于检查站,必须检查完放行了当前人才会检查下一个人。
-
记录一次POI导出文件超时报错的问题
2020-06-22 16:59:08# 指定向uWSGI传送请求的超时时间,完成握手后向uWSGI传送请求的超时时间。 proxy_connect_timeout 600s; # 指定连接到后端uWSGI的超时时间。 proxy_read_timeout 600s; # 指定接收uWSGI应答的超时时间,完成握手...后端日志错误信息

解决办法
在nginx 的 location 中 添加如下参数即可
proxy_send_timeout 600s; # 指定向uWSGI传送请求的超时时间,完成握手后向uWSGI传送请求的超时时间。 proxy_connect_timeout 600s; # 指定连接到后端uWSGI的超时时间。 proxy_read_timeout 600s; # 指定接收uWSGI应答的超时时间,完成握手后接收uWSGI应答的超时时间。
-
php导出大数据csv文件超时解决方案
2018-05-20 17:11:48作者在一次工作中需要导出一份10多万数据的csv文件,导出过程中出现时php超时的问题,下面提供下个人的解决方案:1. 使用分页检索数据库,首先在页面中获取到页数及在服务器中生成一个只有title的csv文件2. 在页面...作者在一次工作中需要导出一份10多万数据的csv文件,导出过程中出现时php超时的问题,下面提供下个人的解决方案:
1. 使用分页检索数据库,首先在页面中获取到页数及在服务器中生成一个只有title的csv文件
2. 在页面中js循环调用ajax,循环次数为之前获取到的页数,在ajax调用的页面中根据条件查询出数据,fwrite写入到csv文件中
3. 这样多次循环后生成完整的csv文件,完成后跳转到另一页面中,页面中访问csv文件地址,读取内容
4. 将内容echo出来,就提示用户下载文件了
5. 最后删除csv文件即可
重点在于循环调用ajax写入csv文件
-
导出zip超时问题解决
2021-02-24 22:50:56项目遇到导出大量的excel文件打包成zip导出发现nginx error (超时) 解决方案:分页导出; 具体实现逻辑:前端做一个进度条,按照分页请求接口,每次请求接口生成excel文件放在指定的唯一目录下返回成功,进度条...项目遇到导出大量的excel文件打包成zip导出发现nginx error (超时)
解决方案:分页导出;
具体实现逻辑:前端做一个进度条,按照分页请求接口,每次请求接口生成excel文件放在指定的唯一目录下返回成功,进度条增加,最后一次请求把文件夹打包成zip格式下载下来。
第一步:获取分页的数据接口:
第二步:写入excel文件
第三步:最后一次请求时打包文件夹zip并下载 -
java上传大文件504_java web开发中大量数据导出Excel超时(504)问题解决
2021-02-13 01:28:17本工具导出的文件格式为.csv文件,windows office工具默认编码为ASCI,wps会匹配各种编码,libreOffice calc可以指定编码,故此设置编码为GBK,兼容三种Excel软件,也可根据自身需求设置编码。 本工具只处理了CSV中... -
定义asyncExportFile服务,通过异步下载导出文件
2017-07-14 00:43:43要解决的问题:导出文件超时。 解决思路:异步下载方式进行导出。先生成下载任务,然后轮询文件名,生成文件名的时候,再执行下载。 由于系统中需要执行导出的操作较多,因此将导出方法封装成了一个服务... -
关于数据导出超时的问题
2016-08-15 15:49:44实际工作中,我们经常导出报表的需求,当导出数据量过大的时候,经常会遇到超时和内存溢出的问题。 解决方案一 超时可用: set_time_limit(0) 解决。 内存溢出可用: ini_set('memory_limit', '自定义内存')。 解决... -
nginx +phpfastcgi 环境下 导出excel文件,超时,数据被截断问题,解决
2016-01-16 21:35:50原文网址:... 修改linux 配置文件 worker_processes 1; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; pid -
使用wordpress导出XML格式备份时超时问题的解决
2015-05-13 21:50:17也就是导出的XML文件不完全就停止了,而在这个不完整的XML文件末尾都会有一句提示语句:Fatal error: Maximum execution time of 30 seconds exceeded。这就说明你的php执行时间最大不能超过30秒钟。那么如何解决这... -
关于springboot+SpringMVC使用poi导出文件问题
2019-03-12 16:08:56因为数据量比较庞大,所以POI我们使用的XSSFWorkBook版本,专门用来处理大数据的。 直接进入正题,最近下载的时候发现服务器总会抛出一个异常 ...然后老规矩先查询了一下问题,发现网上有人说是超时的问题,默... -
利用springboot实现简单的异步导出Excel操作,解决Http请求超时问题
2020-08-27 14:28:35该博客记录了当进行Excel文件导出的时候,如果文件导出量过大导致http请求超时的情况,所以进行了异步线程导出的想法。 Controller层 首先需要在controller层加入一个注解@EnableAsync表明开启多线程操作 实现... -
PHP数据导出CSV格式文件
2020-05-12 11:06:58经常会遇到超时或者内存不足。解决方式都是网上的几种,百度google一大推,供参考。github传送地址https://github.com/PHPOffice/PHPExcel 由于就是数据导出,所以后面使用了导出csv格式数据,摒弃了PHPExcel。... -
bootstraptable 怎么在特定行添加数据_小胖:远哥,几万行数据导出超时了怎么办?...
2020-12-25 12:14:18点击上方一个优秀的废人,选择设为星标优质文章,及时送达巨人的肩膀:albenw.github.io/posts/d093...POI 的坑,以及分别对于 xls 和 xlsx 文件怎么优化大批量数据的导入和导出。一次线上问题这是一次线上的问题,... -
MYSQL导出为excle文件
2016-11-04 23:32:29方法一 // 脚本不超时 set_time_limit(0); /* * 导出EXECL */ function to_execl($data, $title, $firstline, $datacharset, $specialarr,$topTitle=''){ date_default_timezone_set("PRC"); Header("Conten -
使用phpExcel类导出excel文件相关问题总结
2012-03-23 10:34:12使用phpExcel类导出excel文件相关问题总结 总结一下最近使用phpexcel类导出excel...导出数据量大时,提示内存超过最大值或者运行时间超时的问题。 先看下phpexcel常用的方法总结(摘录自zeal_blog:http://ww -
百万数据导出+上传文件服务器+下载
2019-03-20 15:15:10背景描述:数据库里面有一张表A,里面有90w+的数据,有时候会...3.每次用户导出都要查询数据库→下载,用户体验不好,所以第一次生成文件以后把文件放到文件服务器上,然后返回文件地址,以后每次导出只需要通过地... -
大量数据导出为Excel文件(转贴)
2019-10-08 05:09:351.导出的执行速度要比较快,否则有http请求超时的问题; 当然如果您是使用winForm方式就不在此列。 2.Excel文件有最多65535行数据的限制; 3.数字会有格式变成指数方式的麻烦; 比如身份证号码,以数... -
java导出excel文件和设置
2018-04-12 09:38:22String title=new String[] { orgName + "任务统计汇总表(" + searchRange +")"};//标题String title[] = { ...超时完成任务数", "未完成任务数" };//表头HSSFWorkbook workbook = -
处理大数据量的导出/导入文件问题
2020-01-30 13:41:11loading时间过长,用户体验也不好(一些用户可能中途F5刷新,或者登录超时等情况,会导致这一次导入/导出结果失败) 问题解决方案的摸索 1.直接把ajax的超时以及服务器超时加大(tips:记得服务器那边的超时要... -
[小技巧]导文件超出php或nginx超时时间,怎们办?
2016-03-21 22:54:17导出文件超出php或nginx的超时限制,怎么办 -
大量数据导出为Excel文件的问题解决
2013-07-04 10:45:132010-12-20 10:53 大量数据导出为Excel文件的问题解决(C#,ASP.NET) 依据SZW朋友的提醒:本文所说的Excel...1.导出的执行速度要比较快,否则有http请求超时的问题; 当然如果您是使用winForm方式就不在此列。 -
android文件导出错误—— failed to pull a selection
2017-08-11 19:52:00使用效率检视工具traceView,在导出检测文件时,出现了“failed to pull a selection”问题,网上搜索了几篇文章,有的说,是因为导出超时,我将 windows-->preferences-->android-->DDMS中的ADB ... -
【学习点滴-php】使用phpExcel类导出excel文件相关问题总结
2011-10-26 17:17:23使用phpExcel类导出excel文件相关问题总结 Autor:xiaoqingtime:2011-04-22 总结一下最近使用phpexcel类导出excel ...导出数据量大时,提示内存超过最大值或者运行时间超时的问题。 先看下phpexcel常用的方法总结 -
Postman导出的.json文件转成Jmeter的.jmx文件
2020-08-14 09:54:49最近测公司的项目,发现有个接口调用的多了会出现个别情况的响应超时,就想着用jmeter跑一下多线程,看下这种情况是否经常出现,然后就遇到了一个新颖的问题:怎么把postman中的接口转移到jmeter进行测试。...