代码之家  ›  专栏  ›  技术社区  ›  Ela Buwa

Laravel作业在不启动队列的情况下实时执行

  •  0
  • Ela Buwa  · 技术社区  · 6 年前

    在Laravel 5.8上运行 我正在创建大量的工作,我认为一旦队列启动,就应该执行这些工作。 我的问题是,当我还没有启动队列时,作业就会被执行。

    它们甚至没有被插入到 jobs 由迁移创建的表。

    下面是我认为相关的设置和代码。如果需要更多信息,请告诉我。

    在新安装上:

    php artisan queue:table
    php artisan migrate
    

    .env文件

    QUEUE_CONNECTION=database
    

    创建了queuedtask

    class FulfillmentTask implements ShouldQueue{
    //code here
    }
    

    控制器

    use App\Jobs\FulfillmentTask;
    
    //rest of the class here
    
    public function somefunction(Request $request){
    //some code here
    //read csv file
    foreach ($fileContents as $row){
                FulfillmentTask::dispatch($orderId, $client, $request->sendEmail)->onQueue('database');
            }
    }
    

    问题是执行FulfillmentTask时没有 queue:work 终端发出的命令。

    知道为什么会这样吗?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Kevin Bui    6 年前

    “数据库”是一个队列连接。请将您的工作发送到该连接。

    FulfillmentTask::dispatch($orderId, $client, $request->sendEmail)->onConnection('database');
    

    这似乎是默认连接,所以您只需分派作业。

    FulfillmentTask::dispatch($orderId, $client, $request->sendEmail);