简体   繁体   中英

laravel run command / cron every 7 seconds on sunday

So i would like to accomplish the a command which runs every sunday but also every 7 seconds on that sunday.

The following is from the docs but I don't have an idea on how to achieve this. Anyone able to direct me in the right direction?

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

This will run the command sunday every minute:

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

Check it here

PS: I don't think you can use cron to go lower than "every minute".

I believe you cannot achieve this via the scheduler API. However, you could run a custom command/job on sundays every minutes like this:

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

Then in your job, call the CLI command you need to run, sleep for seven seconds and repeat this process for 1 minutes. Finally, make sure to take a look at the Laravel documentation about Jobs: https://laravel.com/docs/8.x/queues For instance, using 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);
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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