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.