【问题标题】:Laravel Queue TimeoutLaravel 队列超时
【发布时间】:2018-07-23 14:30:39
【问题描述】:

我正在使用该命令运行 Laravel 队列:

/usr/bin/php7.2 artisan queue:listen --timeout=0

但该过程一直在 300 秒处停止并出现该错误:

Symfony\\Component\\Process\\Exception\\ProcessTimedOutException(code: 0): The process [...] exceeded the timeout of 300 seconds

我也尝试在作业类中设置超时:

public $timeout = 5000;

有人知道该怎么做吗?此过程用于视频编码,运行时间有点长。

谢谢!

【问题讨论】:

    标签: php laravel ffmpeg


    【解决方案1】:

    正如ProcessTimedOutException 所指出的,Symfony 进程实际上正在超时,而不是 Laravel 队列。如果您知道并期望进程长时间运行(例如视频处理),​​则将 Process 类中的 timeout 设置为 null 以指示没有超时,如下所示:

    ...
    $process = new Process($command);
    $process->setTimeout(null);
    ...
    

    【讨论】:

    • 实际上,artisan queue:listen 正在由 Symfony Process 组件执行。这很可能是导致超时的原因。虽然,Laravel 不遵守指定的超时时间很奇怪。
    【解决方案2】:

    最好的方法,你需要单独的数据通过页面推送到队列,而不是1个队列大数据,我们有很多队列等待运行后台,如果你提高速度,你可以让多个作业cath队列。

    1. 按页获取数据。
    2. 将页面推送到队列
    3. 作业将按页处理数据。如果您想提高速度,请让多个进程处理作业。

    【讨论】:

      猜你喜欢
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2014-11-10
      • 1970-01-01
      • 2017-10-02
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多