【问题标题】:TIMEOUT in LaravelLaravel 超时
【发布时间】:2019-02-21 20:07:11
【问题描述】:

所以,我必须读取一个 excel 文件,其中每一行都包含一些我想要写入数据库的数据。我将整个文件传递给 laravel,它读取文件并将其格式化为数组,然后我在我的数据库中进行新的插入(或更新)。 问题是,输入的 excel 文件可以包含数千行,并且需要一段时间才能完成,在某些情况下会给出 timeout error。 当我尝试在本地进行此操作时,我使用set_time_limit(0); 函数,因此不会发生超时,并且效果很好。但是在远程服务器中,出于安全原因,此功能被禁用,并且我的代码由于超时而崩溃。 有人可以帮助解决这个问题吗?也许另一个想法如何更好地解决这个问题?

【问题讨论】:

    标签: mysql excel laravel timeout


    【解决方案1】:

    处理需要很长时间的任务的一个好方法是使用所谓的jobs

    当有人向您发送文件时,您可以创建一个名为 ImportExceldispatch 的工作。

    好好看看docs,他们有一些很好的例子来说明如何做到这一点。

    【讨论】:

      【解决方案2】:

      您可以使用以下步骤解决此问题:

      1.取出 csv 文件并将其临时存储在存储中:

      您可以在用户上传时存储大型 csv。如果不是从前端上传的内容,请确保已将其保存以供下一步处理。

      2。然后派发一个可以排队的job

      您可以创建一个可以异步处理此问题的作业。您可以使用Supervisor 来管理队列和超时等。

      3.使用 thephpleague 之类的包:

      使用这个包(或类似包),您可以分块记录或一次读取一个。将内存使用量保持在限制范围内真的很有帮助。此外,它还有不同的方法可供选择从文件中读取数据。

      4.处理完文件后,您可以将其从临时存储中删除:

      只是一些拆卸清理活动。

      【讨论】:

      • 我正在尝试这样做,但我仍然遇到同样的问题。我不知道我做错了什么,但 laravel 似乎仍在阻止我的应用程序。
      • PHP 中定义的 max_execution_time 是多少?
      猜你喜欢
      • 2021-05-19
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2016-12-16
      • 2017-04-25
      • 2015-02-24
      相关资源
      最近更新 更多