为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Laravel 上同步安排队列作业

如何在 Laravel 上同步安排队列作业

PHP
莫回无 2023-05-12 16:03:23
几乎就是标题所说的,当我写这个的时候kernel.php$schedule->job(new Heartbeat)->everyFiveMinutes();它异步运行代码,无论如何我可以dispatchNow()按计划进行吗?我正在使用 Laravel 7
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

您可以使用onConnection方法即时设置驱动程序。


$schedule->job((new Heartbeat)->onConnection('sync'))->everyFiveMinutes();

另一种选择可能是在调用该job方法时,设置connection.


/**

 * Add a new job callback event to the schedule.

 *

 * @param  object|string  $job

 * @param  string|null  $queue

 * @param  string|null  $connection

 * @return \Illuminate\Console\Scheduling\CallbackEvent

 */

public function job($job, $queue = null, $connection = null)

{

    return $this->call(function () use ($job, $queue, $connection) {

        $job = is_string($job) ? Container::getInstance()->make($job) : $job;


        if ($job instanceof ShouldQueue) {

            $this->dispatchToQueue($job, $queue ?? $job->queue, $connection ?? $job->connection);

        } else {

            $this->dispatchNow($job);

        }

    })->name(is_string($job) ? $job : get_class($job));

}


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信