laravel 大数据导出excel 如何优化

laravel 大数据导出 不能执行 如何优化

阅读 10.6k
10 个回答

不能执行?代码有bug?
大数据的时候foreach加引用

如果导出成csv格式的话,不会有啥问题吧,直接打开一个文件,流式写入数据就可以了。
但是如果是使用phpexcel的话,每个cell都是一个php对象,就算是开启缓存,数据一多,还是会报内存不够的错误。

数据很大就分页批量追加写进Excel文件中

你这样提问的一句话,得让别人写一长篇文字才能说明白,而且写完了还不一定能解决你的问题,万一就是你的代码有bug 呐?
把你的代码分段粘贴进来,说明一下。然后再把报错内容也截图放在提问中先。

这个问题才使用了一种解决方案,这里就不考虑你的sql和代码的执行效率了.这里也不考虑csv格式了,因为很多运营或者其他需要数据的人是需要格式的.原本我做的导出里面将近有70多个字段,所以你懂得导出大量数据时会有两个明显问题脚本执行时间长内存吃得多,很容易504(这里不讨论nginx php-cgi的配置),而且会占用大量cpu时间 cpu占用飙升,另一个可能的问题就是当有多个导出并行时就会吃光大量内存,影响线上业务.所以可以采用分页导出,然后这个分页可以是还在服务端处理输出,另一个更好的方案就是 服务端输出JSON 客户端来导出excel,分页加浏览器导出 可以非常好的解决这个问题,推荐一个js导出插件 sheetJs github https://github.com/SheetJS/js...

可以使用yield;
可以说是多大的数据都能执行,社区里也有很多介绍的,可以去看看。

分页取出数据,然后追加写入到文件。

遍历请求接口写入缓存再导出excel。

没有报错就是数据很大 最后直接没反应了
clipboard.png
直接拼接数据库中的数据

推荐问题
宣传栏