我有一个报告生成功能。 导出到csv或txt。 对于每个月,每行将有25000条记录,共55列。 每年将超过300000! 我尝试添加内存限制,但我不认为它的好!无论如何现在它的128M。
我的期望
我会将用户选择的日期范围拆分为25天或30天。 我将运行25天的获取数据,然后编写csv。 然后获取下一个25000,写下来。像这样。
我怎样才能达到这个目标?
使用函数$result= fetchRecords();
为了编写csv,我将这个$ result数组传递给查看页面,并通过逗号进行循环和分隔打印。
因此在控制器中它将是$template->records=$result;
如果我在for循环中执行此操作
for(){
$result= fetchRecords();
$template->records=$result;
}
我不想这会起作用。
怎么做?执行fetch.write然后获取然后写入。
你能否建议更好的方法在PHP中实现它,将其保留在内存限制中?
答案 0 :(得分:0)
我从db获取一个巨大的数据到一个数组。然后再循环这个数组写入csv或text.That真的杀死了内存。
现在,当我从db获取数据时,在同一个循环中写入文件。 没有使用数组。很大的不同。
PHP可以更好地导出到csv或文本。 PHP真的是一门很棒的语言。
现在正在下载25 mb的csv。 :)我打破了excel ..因为它超过了65550条记录。:))
对我来说绰绰有余。
所以吸取的教训是 - 不要将数组用于这种类型的大数据存储。