首页 新闻 会员 周边

php导出一百万条数据到excel cpu 满了 服务器卡死

0
悬赏园豆:60 [已解决问题] 解决于 2021-02-18 16:46

yii2 框架 导出数据到csv 分页查询每次查100条
查询完数据处理之后及时删除变量
也是用 gc_collect_cycles();
也安装网上说的
\Yii::getLogger()->flushInterval = 1;
\Yii::getLogger()->flush(true);
也注释掉了模型的行为
但是内存的使用量还是在不断升高 最后溢出

怎么样才能解决内存溢出的问题

包子心的土豆的主页 包子心的土豆 | 初学一级 | 园豆:133
提问于:2020-12-03 16:07

到那么大,excel能打开吗

弯月亮 3年前

@弯月亮: 有点慢 但是可以打开

包子心的土豆 3年前
< >
分享
最佳答案
0

目前的解决办法是
减少joinwith 使用leftjoin代替 (查看使用joinwith 时的sql 会发现 有多余的查询)
使用数组 而不是对象 数组要比对象小很多
分页查询 分页写入

包子心的土豆 | 初学一级 |园豆:133 | 2021-02-18 16:43
其他回答(7)
0

分段查詢、分段寫入

收获园豆:60
RosonJ | 园豆:4910 (老鸟四级) | 2020-12-03 16:13

已经分页查询了
为什么cpu那么高

支持(0) 反对(0) 包子心的土豆 | 园豆:133 (初学一级) | 2020-12-03 16:17

@包子心的土豆:
寫入呢?也是分段寫入嗎

支持(1) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2020-12-03 16:19

@RosonJ: 是的 一次一万

支持(0) 反对(0) 包子心的土豆 | 园豆:133 (初学一级) | 2020-12-03 16:59

@包子心的土豆:
先做個文字log把執行時間印出來看看,例如每做完1萬筆印一次log,看看瓶頸在哪
該不會是server 效能不好吧...

支持(0) 反对(0) RosonJ | 园豆:4910 (老鸟四级) | 2020-12-03 17:02
0

一百万数据放一个Excel里?

会长 | 园豆:12401 (专家六级) | 2020-12-03 18:14

五六十万吧

支持(0) 反对(0) 包子心的土豆 | 园豆:133 (初学一级) | 2020-12-03 18:17

csv

支持(0) 反对(0) 包子心的土豆 | 园豆:133 (初学一级) | 2020-12-03 18:36
0

excel貌似不支持一百万

y阳y | 园豆:202 (菜鸟二级) | 2020-12-03 20:48

csv

支持(0) 反对(0) 包子心的土豆 | 园豆:133 (初学一级) | 2020-12-03 20:49

用携程试试 另外一个yeild出来 直接睡一会

支持(0) 反对(0) y阳y | 园豆:202 (菜鸟二级) | 2020-12-03 20:50
0
ycyzharry | 园豆:25651 (高人七级) | 2020-12-03 21:54
0

最好贴出代码

jqw2009 | 园豆:2439 (老鸟四级) | 2020-12-04 09:09
0
风行天下12 | 园豆:3867 (老鸟四级) | 2020-12-04 09:40
0

不说导入了,就算正常用软件打开这个50W条数据的excel都会卡死。。。这么多数据不知道为啥要放到excel。。。

为乐而来 | 园豆:1432 (小虾三级) | 2021-01-04 13:50

业务部门需要

支持(0) 反对(0) 包子心的土豆 | 园豆:133 (初学一级) | 2021-01-04 14:32

@包子心的土豆: 如果正常导出,navicat直接可以导出成excel文件,压根不需要php。

支持(0) 反对(0) 为乐而来 | 园豆:1432 (小虾三级) | 2021-01-05 10:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册