Laravel Excel 队列消耗过多 RAM

Laravel Excel Queue consume too much RAM

我已经设置了 Laravel 队列以使用您的 Laravel excel 读取 excel 文件,它非常适合小文件。

但是对于大文件(100+mb)和 400k+ 的记录,它需要太多时间并且消耗服务器将近 40GB RAM。

我已经为 运行 队列设置了一个主管:工作命令。我的服务器 RAM 是 60GB。 对于小文件,它一切正常,但它不适用于大文件。

我还使用 telescope 检查了查询时间,但没有查询占用大量时间。

目前,您的问题没有 straight-cut 答案。这在很大程度上取决于您的目标结果。您将不得不设计自己的方式来完成它。

我想到的一件事是对大型 excel 文件进行分块或分区,并将它们提供给队列。也许您可以利用 laravel 作业批处理。

您可以介绍的另一件事是微服务系统,其中这些繁重的任务将由另一台更好的机器完成。

但是就像我说的,对于这样的问题没有单一的解决方案。这些你得自己去计算找。

对于所有面临此类问题的人,我建议使用 Spout。它就像魅力一样。为此,我尝试了 3 PHP 项服务,最后,只有 spout 起作用了。

https://opensource.box.com/spout/

https://github.com/box/spout