laravel 运行 command / cron 在周日每 7 秒一次

laravel run command / cron every 7 seconds on sunday

所以我想完成一个命令,它在每个星期天运行一次,而且在那个星期天每 7 秒运行一次。

以下内容来自文档,但我不知道如何实现。谁能指引我正确的方向?

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

这将 运行 命令星期日每分钟:

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

检查一下here

PS:我不认为你可以使用 cron 来低于“每分钟”。

我相信你无法通过调度程序实现这一点 API。 但是,您可以像这样 运行 在星期日每分钟自定义 command/job :

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

然后在您的工作中,调用您需要的 CLI 命令 运行,休眠 7 秒并重复此过程 1 分钟。 最后,请务必查看有关 Jobs 的 Laravel 文档:https://laravel.com/docs/8.x/queues 例如,使用 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);
        }
    }
}