因此,我必须读取一个Excel文件,其中的每一行都包含一些我想写入数据库的数据。我将整个文件传递给laravel,它读取文件并将其格式化为数组,然后在数据库中进行新的插入(或更新)。
事实是,输入的excel文件可以包含数千行,并且要花一些时间才能完成,在某些情况下会给出timeout error
。
当我尝试在本地进行此操作时,我使用set_time_limit(0);
函数,因此不会发生超时,并且效果很好。但是出于安全原因,在远程服务器中禁用了此功能,并且我的代码由于超时而崩溃。
有人可以帮助解决这个问题吗?也许是另一个如何更好地解决此问题的想法?
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以按照以下步骤进行操作:
1。提取csv文件并将其临时存储在存储中:
您可以在用户上传时存储较大的csv。如果不是从前端上传的内容,请确保已保存以供下一步处理。
2。然后调度job,该队列可以排队:
您可以创建一个可以异步处理的作业。您可以使用Supervisor来管理队列和超时等。
3。使用thephpleague之类的软件包:
使用此程序包(或类似程序包),您可以对记录进行分块或一次读取一个。将内存使用量限制在一定范围内确实很有帮助。此外,它还有多种方法可供选择,可以从文件中读取数据。
4。处理完文件后,您可以将其从临时存储中删除:
只需进行一些拆解清理活动。