Reputation: 27
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();
}
Upvotes: 0
Views: 2671
Reputation: 888
In app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->command('test:cron')->cron('*/7 * * * 7')->runInBackground();
}
=>
*/7
=> every 7 Seconds=>
*
=> every Hour=>
*
=> every day in the month=>
*
=> every month=>
7
=> day in week*
every day0-6
Sunday to Saturday7
meanSunday
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
Upvotes: 0
Reputation: 184
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);
}
}
}
Upvotes: 3