顺晟科技
2022-10-09 10:34:10
207
使用PHP spreadsheet包导出至.xlsx文件,一次性循环万级的数据就容易内存溢出,有没有什么比较靠谱的导出方案呢?
提供个思路:
放开内存限制ini_set('memory_limit', '1024M');
excel
可以导出为 xml
文件,反过来也可以打开 xml
文件;xml
文件实现导出十万数据;xml
文件头 + 遍历数据分批写入文件(数据可以增量从数据库读取) + 文件尾。咱们打开一下思路,或许可以让前端来把几个csv分别下载之后,通过前端来合并成出excel文件,不但能减少后端阻塞、网络阻塞,还把相当一部分内存压力转给用户的客户端。
希望能帮助到你。
首先提问一问题。导出数据为什么要用xlsx格式。如果你不需要合并表格,然后表格有富文本的话。
那么你可以考虑导出为csv
csv导出可以采取追加写到文件
。Excel却不行,它只能写到内存,一次性输出。
一种:加buffer, 批量写进去,写完部分就释放内存
另一种:生成多个 excel, 打个zip 包让用户下载
07
2023-03
26
2023-02
26
2023-02
26
2023-02
30
2022-11
29
2022-11