Laravel 5每30秒安排一次工作

时间:2016-04-21 15:09:47

标签: laravel laravel-5 scheduled-tasks laravel-5.2 laravel-scheduler

我正在使用Laravel计划来运行cron作业。

在我的crontab中,我添加了(使用正确的项目路径):

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

现在我的App \ Console \ Kernel.php看起来像:

protected function schedule(Schedule $schedule)
{
        $schedule->command('investments:calculate_interests')->everyMinute();
        $schedule->call('\App\Http\Controllers\UsersController@testEvent')->everyMinute();
}

使用它就像我每分钟成功运行作业一样。但我怎么能改变它来运行它们每10或20或30秒?

2 个答案:

答案 0 :(得分:0)

我每秒解决这个问题:

public function handle()
{
    $count = 0;
    while ($count < 59) {
        $startTime =  Carbon::now();

        $this->travelsRequestsDriversRepository->beFreeRequestAfterTime();

        $endTime = Carbon::now();
        $totalDuration = $endTime->diffInSeconds($startTime);
        if($totalDuration > 0) {
            $count +=  $totalDuration;
        }
        else {
            $count++;
        }
        sleep(1);
    }


}

并在cron table中添加此命令。

* * * * * /usr/local/php56/bin/php56 /home/hamshahr/domains/hamshahrapp.com/project/artisan taxis:beFreeTaxis 1>> /dev/null 2>&1

答案 1 :(得分:-1)

它不像Alexey Mezenin建议的那样工作,但他给了我一个想法,在哪里测试一些解决方案。

您可以添加不带计时器的循环

int

但是直接进入命令/事件或其他你要循环的东西。

例如,我正在运行一个命令,所以在命令中我添加了:

protected function schedule(Schedule $schedule)

现在我的命令每30秒工作一次。