【问题标题】:How to avoid waiting for the Laravel queue and continue with functionality如何避免等待 Laravel 队列并继续使用功能
【发布时间】:2016-08-17 21:06:41
【问题描述】:

这可能是一个非常琐碎/新手的问题。我已经开始在我的一个控制器功能中使用 Laravel Queue;但是,当我分派作业时,我必须等待队列完成才能让我继续使用该功能。我认为队列背后的整个概念是它允许您在后台处理时间密集型任务,以便您可以继续使用其余功能。

这是我的控制器的样子:

public function postCreate(Request $request)
{
    // Validate Request
    $this->validate($request, $this->rules());

    // I have to wait for this to finish before it lets me continue
    // I want this to be processed in the background instead
    $this->dispatchFrom('App\Jobs\GenerateReport', $request);

    return json_encode([
        'html' => '<p>some html</p>'
    ]);
}

【问题讨论】:

    标签: php laravel queue jobs


    【解决方案1】:

    如果脚本确实在线而不是离线处理作业,我最好的猜测是您正在为队列使用同步驱动程序,它会立即处理作业并处于阻塞状态。

    检查config/queue.php 文件以查看“默认”配置值设置为什么,默认情况下应为:env('QUEUE_DRIVER', 'sync')。如果是这种情况,那么这是正确的,那么请查看您的 .env 文件并确保为 QUEUE_DRIVER 设置了环境变量。

    如果QUEUE_DRIVER 变量在您的.env 文件中设置为“同步”,那么您使用的是同步驱动程序。如果根本没有设置,那么queue.php 文件中的那一行表示它将回退到同步驱动程序。

    如果所有这些都是真的,只需使用您希望使用的驱动程序更新环境变量,并确保在 config/queue.php 文件中更新该驱动程序的配置选项。

    希望有帮助!

    【讨论】:

    • 必须调用php artisan queue:work才能真正开始处理队列!
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2020-01-15
    • 2020-12-24
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多