84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
系统报表功能,需求希望能一键计算,不在乎计算时间,然后导出excel就行。6000条sql,没有优化余地,使用的mssql2000,thinkphp3.1 ,数据库设计的不太好,但是线上项目,暂时没精力调整。程序写完后,运行要600s跟死机了一样,大家遇到这种情况一般怎么解决?
认证0级讲师
一般这种长时间的,就是在后台执行。前台发起请求,然后提示:后台处理中,请稍候查看。后台可以用队列等方式去生成excel。然后发送到指定邮箱或者提供一个下载链接。
thinkphp支持命令行模式运行,然后你跑一个linux/windows定时任务,0点这种去执行生成excel发一个邮件之类的即可
建议用redis做个队列 既然是做报表统计 就可以弄个定时任务
可以用缓存,用定时任务将结果进行缓存
让程序在命令行命令行运行。运行的结果存在一个表中。导出的时候,直接导出这个表。
一般这种长时间的,就是在后台执行。前台发起请求,然后提示:后台处理中,请稍候查看。后台可以用队列等方式去生成excel。然后发送到指定邮箱或者提供一个下载链接。
thinkphp支持命令行模式运行,然后你跑一个linux/windows定时任务,0点这种去执行生成excel发一个邮件之类的即可
建议用redis做个队列 既然是做报表统计 就可以弄个定时任务
可以用缓存,用定时任务将结果进行缓存
让程序在命令行命令行运行。运行的结果存在一个表中。
导出的时候,直接导出这个表。