繁体   English   中英

Laravel 队列作业执行延迟

[英]Laravel Queued job execution with delay

我正在使用 Laravel 排队作业来简单地以 JSON 格式创建我的表的副本,然后删除创建的文件。 这是我的处理方法:

public function handle()
{
    unlink($this->file);
}

只要我在响应后立即发送文件,代码就可以正常工作:

DeleteCreatedFiles::dispatchAfterResponse(/* File path */);

但是我想在删除之前将文件保留一段时间,所以我使用了这段代码:

DeleteCreatedFiles::dispatch(/* file path */)
        ->delay(now()->addSeconds(30));

问题是,无论我等待多久,这项工作都不会执行。 我尝试使用望远镜,它一直显示待处理状态。 请帮我弄清楚为什么会这样。 谢谢!

  1. 首先,您必须将.env文件中的队列驱动程序设置为不sync

因为如果您的工作被延迟,则必须排队。 所以不应该使用同步选项

  1. 然后创建一个队列

基于队列驱动程序(如数据库,redis,...),您可以创建一个队列。

  1. 运行一个工人:
  • 对于单线程运行:
php artisan queue:work

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM