目录
问题
目前解决方案
回复内容:
首页 后端开发 php教程 WEB开发中。下载服务器上面的报表。怎么防止数据量过大导致超时的场景

WEB开发中。下载服务器上面的报表。怎么防止数据量过大导致超时的场景

Jun 06, 2016 pm 08:35 PM
java php python web 电子商务

问题

需要服务端生成报表,由于数据量过大。往往会导致下载过程中504错误。
下载流程已经最优化了。

目前解决方案

前台点击下载报表,发起一个异步请求。后台处理完数据以后。把数据通过邮箱的方式发给下载者。

有没有其它更加好的办法,可以解决这个问题?谢谢。

回复内容:

问题

需要服务端生成报表,由于数据量过大。往往会导致下载过程中504错误。
下载流程已经最优化了。

目前解决方案

前台点击下载报表,发起一个异步请求。后台处理完数据以后。把数据通过邮箱的方式发给下载者。

有没有其它更加好的办法,可以解决这个问题?谢谢。

谢谢各位的回答。
这边我自己总结了一下,根据我自己的实际情况主要

  1. 前台异步提交一个请求,后台进行异步组合报表。然后通过1. 邮件的方式通知用户2. 通过定时器将消息PUSH给用户,让用户去相应的地址上下载
  2. 查询时间精确到秒。在用户请求之前,先告诉用户在这个时间段订单个数。我们可以设定一个合理的值来提示用户(改动最小)
  3. 采取任务的形式,前台提交一个任务给后台,后台创建一个任务,并且存入数据库。前台可以每隔30s向后台请求,获取任务的状态,以防止超时。相应的前台有一个loading框(这里也可以改成将文件的生成过程放在服务端,然后这里给用户返回的是一个连接,用户可以直接点连接来下载文件)(这个类似使用AJAX的长连接模式)
  4. 把分析过程放在服务端。服务端起一个定时任务,隔段时间去分析这些数据。直接生产文件放在服务端。可以提供给用户一个下载列表直接提供给用户下载
    5.优化流程,采取dubbo批量数据请求。采取dubbo异步请求。多线程处理数据。多个dubbo服务合并(性能优化)

最直接的办法便是,压缩数据(例如导出时进行压缩),调整 CGI 超时时间。这其中,可以考虑节省 CGI 进程(因为即使输出成果已经完成,按照题主的说明,fast_cgi 的 response buffer 肯定是远远小于这次输出的大小),在最后输出的过程上用其他服务(例如直接用nginx)代劳。

其实,例如在问题中的这种从产品设计的角度解决问题在我看来最优解,实时下载真的是那么必要吗?

需要服务端生成报表,由于数据量过大。往往会导致下载过程中504错误。

看你的意思,超时的原因不是产生报表耗时太久,而是因为报表文件过大造成的。

3种做法

1.压缩报表文件,例如:tar,gzip,zip……

2.修改web服务器的超时时间设定。

3.导出的文件放到另外一个目录用其他工具下载,例如:ftp,samba,sftp……

边读数据,边写数据,比如分页读写,这样就不会超时了

换个思路,你的所有问题都在超时上面! 为什么超时,因为等待时间过长。那为什么要等待呢???

你可以发出请求,服务器端执行,告诉用户,正在执行,表示就成功了。然后就是用户接受邮件的等待。

这个时候,你可以告诉用户需要等待,或者加一个消息通知,成功后通知用户

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1659
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1232
24
PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHP的影响:网络开发及以后 PHP的影响:网络开发及以后 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

继续使用PHP:耐力的原因 继续使用PHP:耐力的原因 Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

Golang vs. Python:性能和可伸缩性 Golang vs. Python:性能和可伸缩性 Apr 19, 2025 am 12:18 AM

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

Python与C:学习曲线和易用性 Python与C:学习曲线和易用性 Apr 19, 2025 am 12:20 AM

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在开发效率上优于C ,但C 在执行性能上更高。1.Python的简洁语法和丰富库提高开发效率。2.C 的编译型特性和硬件控制提升执行性能。选择时需根据项目需求权衡开发速度与执行效率。

See all articles