因此,我必须读取一个Excel文件,其中每行包含一些我想要的数据,这些数据确实在数据库中写入。我将整个文件传递给laravel,它读取文件并将其格式化为数组,然后在数据库中进行新的插入(或更新)。问题是,输入Excel文件可以包含数千行,并且需要一段时间才能完成,在某些情况下会提供timeout error
。当我尝试在本地进行此操作时,我会使用set_time_limit(0);
函数,以免超时发生,并且它起作用了。但是在远程服务器中,由于安全原因,该功能被禁用,并且由于超时而导致我的代码崩溃。有人可以帮助解决这个问题吗?也许在如何更好地解决此问题的另一个理论中?
处理需要很长时间的任务的好方法是使用所谓的作业。
您可以在某人发送文件时完成名为ImportExcel
的工作和dispatch
。
很好地看一下文档,他们有一些很好的例子。
您可以使用以下步骤来照顾这一点:
1。获取CSV文件并将其临时存储在存储中:
用户上传时,您可以存储大型CSV。如果它是未从前端上传的东西,请确保您将其保存在下一步中进行处理。
2。然后派遣可以排队的工作:
您可以创建一个可以异步处理此工作的作业。您可以使用主管来管理队列和超时等。
3。使用诸如thephpleague之类的软件包:
使用此软件包(或类似),您可以一次删除记录或一次读取记录。将您的内存使用量保持在极限上真的很有帮助。另外,它具有可用的不同方法来读取文件中的数据。
4。处理文件后,您可以将其从临时存储中删除:
只是一些拆卸清理活动。