【问题标题】:laravel run command / cron every 7 seconds on sundaylaravel 周日每 7 秒运行一次命令 / cron
【发布时间】:2021-07-28 03:38:09
【问题描述】:

所以我想完成一个命令,该命令每周日运行一次,但在该周日每 7 秒运行一次。

以下内容来自文档,但我不知道如何实现这一点。谁能指引我正确的方向?

protected function schedule(Schedule $schedule)
{
    $schedule->command('test:cron')
             ->everyMinute();
}

【问题讨论】:

    标签: php laravel cron command


    【解决方案1】:

    这将在星期日每分钟运行一次命令:

    protected function schedule(Schedule $schedule)
    {
        $schedule->command('test:cron')->cron('* * * * SUN');
    }
    

    查看here

    PS:我认为你不能使用 cron 来低于“每分钟”。

    【讨论】:

    • 这就像一个魅力,在今天的笔记上进行了测试,我认为这不能满足我的需求,但它确实做到了。
    【解决方案2】:

    我相信您无法通过调度程序 API 实现这一点。 但是,您可以像这样在星期天每分钟运行一次自定义命令/作业:

    protected function schedule(Schedule $schedule)
    {
        $schedule->job(new Job)
                 ->sundays()
                 ->everyMinutes();
    }
    

    然后在您的工作中,调用您需要运行的 CLI 命令,休眠 7 秒,然后重复此过程 1 分钟。 最后,请务必查看有关 Jobs 的 Laravel 文档:https://laravel.com/docs/8.x/queues 例如,使用 symfony/process :

    namespace App\Jobs;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Contracts\Queue\ShouldBeUnique;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use Illuminate\Foundation\Bus\Dispatchable;
    use Illuminate\Queue\InteractsWithQueue;
    use Illuminate\Queue\SerializesModels;
    use Symfony\Component\Process\Process;
    
    class RunCommand implements ShouldQueue, ShouldBeUnique
    {
        use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    
        public function __construct()
        {
            //
        }
    
        public function handle()
        {
            $process = new Process(['ls', '-lsa']);
    
    
            for ($i = 1; $i < 8; $i++) {
                // Run the command
                $process->run();
    
                // Pause the execution during 7 seconds
                sleep(7);
            }
        }
    }
    

    【讨论】:

    • 这也是一个好方法,这是一项小任务,所以我选择了上面的答案,但这绝对是一个值得关注的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2019-06-06
    • 2014-08-21
    • 2012-03-12
    • 2020-09-18
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多