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 day0-6
Sunday to Saturday{-code-7}
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
Source