Laravel - 将数据排序和导出为CSV的更好方法

时间:2017-05-15 13:04:17

标签: php laravel sorting csv memory

我正在使用Laravel处理项目,我目前有一个cron来处理数据并生成2个CSV文件:1个是排序的(调用文件A)而另一个不是(文件B)。

每个文件大约10mb,每天触发cron,我们不需要数据库来存储结果。

我目前正在做这样的事情:

  • Cron运行并将所有结果存储到数据库中的临时表中
  • 完成该过程后,从该表中读取数据并写入文件B(没有排序的普通文件)
  • 然后,再次运行另一个查询以从表中获取已排序数据,然后写入文件A
  • 之后,清空那个临时表

因为结果数据太大而无法存储为数组(内存不足),所以我们最终使用临时表来存储它们。

我的问题是:这个场景有没有更好的用法?

由于

1 个答案:

答案 0 :(得分:0)

我们通过使用游标解决了将大数据导出为 csv 期间的一些“内存不足”错误。 “内存不足”发生在经典的 Eloquent 方法(Model::where(...)->get())和块函数中。 你可以这样使用游标:

period

您可以在此处找到更多文档:https://laravel.com/docs/8.x/eloquent#cursors