有没有一种方法可以将参数传递给在laravel中调度排队作业?

有没有一种方法可以将参数传递给在laravel中调度排队作业?,laravel,queue,laravel-scheduler,Laravel,Queue,Laravel Scheduler,我需要在队列中运行作业,这需要很长时间(大约2小时)。它检查某些特定服务的可用性。因此,我不想让一个作业运行两个小时(每个fice分钟)不断地发出API请求,而是想使用。我可以通过Artisan helper从任何位置调用调度程序: Artisan::call('schedule:run', [ 'args' => $args ]); 这会分派一份工作。但我不知道如何在kernel.php中传递参数($arg1,$arg2,…),这是我的作业文件所需要的 // Dispatch t

我需要在队列中运行作业,这需要很长时间(大约2小时)。它检查某些特定服务的可用性。因此,我不想让一个作业运行两个小时(每个fice分钟)不断地发出API请求,而是想使用。我可以通过Artisan helper从任何位置调用调度程序:

Artisan::call('schedule:run', [
   'args' => $args
]);
这会分派一份工作。但我不知道如何在kernel.php中传递参数($arg1,$arg2,…),这是我的作业文件所需要的

// Dispatch the job to the "heartbeats" queue...
$schedule->job(new Heartbeat($arg1, $arg2, ..), 'heartbeats')->everyFiveMinutes();
我试图在schedule方法中传递args,但我认为这不是正确的方法

  • 制作一个工匠命令。例如:

    php artisan make:command DispatchJobFromDynamicCalculatedArg

  • 在此artisan命令中计算$args

  • 使用实际包含所需进程的参数分派目标作业
  • 在Kernel.php文件中调度上述artisan命令

  • 就是这样。

    php artisan schedule:run
    是一个命令,您应该只在
    crontab
    中使用。如果您想创建作业,我建议您自己使用命令来分派作业。然后,您自己的命令可以像这样获得您的args:谢谢Rob。我期待着这个答案,但仍然不确定,因为有一种方法可以在没有参数的情况下从调度器中分派作业。我只是通过另一种方式实现了我的目标:在我的工作中检查。。如果服务不可用,则发出ServiceNotAvailable事件,其侦听器等待5分钟并调用相同的作业。如果可用,则发出ServiceAvailableEvent。谢谢。我想我可以单独使用artisan命令,但不能与scheduler一起使用。因为在我的服务可用之前,我需要多次从作业文件运行schedule,所以在调用schedule:run时仍然需要传递参数。