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