php - laravel run command / cron every 7 seconds on sunday

Solution:

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".

Answer

Solution:

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);
        }
    }
}

Answer

Solution:

In app/Console/Kernel.php

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

=> */7 => every {-code-7} Seconds

=> * => every Hour

=> * => every day in the month

=> * => every month

=> {-code-7} => day in week * every day 0-6 Sunday to Saturday {-code-7} mean Sunday

Enable crontab in linux

crontab -e

will open file text to add this

* * * * * php /var/www/path of project/artisan schedule:run >> /dev/null 2>&1

Source