Closed
Description
Laravel Version
10.4.1
PHP Version
8.2
Database Driver & Version
No response
Description
In last versions of laravel 10 was added sub-minute intervals.
But i have strange behavior of runnig of cron task.
All works in Docker with docker-compose.
Cron works in separate from Laravel container.
I have no any errors in logs.
Crontab file:
* * * * * php /var/www/api/artisan schedule:run >> /var/www/api/storage/logs/cron.log 2>&1
\App\Console\Kernel.php:
<?php
namespace App\Console;
use App\Jobs\OneC\SyncChangesFrom1C;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\Log;
class Kernel extends ConsoleKernel
{
/**
* Register the commands for the application.
*/
protected function commands(): void
{
$this->load(__DIR__ . '/Commands');
require base_path('routes/console.php');
}
/**
* Define the application's command schedule.
*/
protected function schedule(Schedule $schedule): void
{
Log::debug('SCHEDULE RUN');
$schedule->job(new SyncChangesFrom1C)->everyTenSeconds();
}
}
SyncChangesFrom1C is a queued job.
handle
method is empty.
Logs of Laravel:
[2023-12-25 08:22:01] local.DEBUG: SCHEDULE RUN
[2023-12-25 08:24:00] local.DEBUG: SCHEDULE RUN
[2023-12-25 08:26:00] local.DEBUG: SCHEDULE RUN
[2023-12-25 08:28:00] local.DEBUG: SCHEDULE RUN
Logs of Cron:
2023-12-25 08:26:00 Running [App\Jobs\OneC\SyncChangesFrom1C] .... 14ms DONE
2023-12-25 08:26:10 Running [App\Jobs\OneC\SyncChangesFrom1C] ..... 6ms DONE
2023-12-25 08:26:20 Running [App\Jobs\OneC\SyncChangesFrom1C] .... 10ms DONE
2023-12-25 08:26:30 Running [App\Jobs\OneC\SyncChangesFrom1C] ..... 5ms DONE
2023-12-25 08:26:41 Running [App\Jobs\OneC\SyncChangesFrom1C] ..... 3ms DONE
2023-12-25 08:26:51 Running [App\Jobs\OneC\SyncChangesFrom1C] .... 15ms DONE
2023-12-25 08:28:00 Running [App\Jobs\OneC\SyncChangesFrom1C] .... 39ms DONE
2023-12-25 08:28:10 Running [App\Jobs\OneC\SyncChangesFrom1C] ..... 3ms DONE
2023-12-25 08:28:21 Running [App\Jobs\OneC\SyncChangesFrom1C] ..... 2ms DONE
2023-12-25 08:28:31 Running [App\Jobs\OneC\SyncChangesFrom1C] ..... 2ms DONE
2023-12-25 08:28:41 Running [App\Jobs\OneC\SyncChangesFrom1C] ..... 5ms DONE
2023-12-25 08:28:51 Running [App\Jobs\OneC\SyncChangesFrom1C] ..... 2ms DONE
If i`m change to everyMinute:
/**
* Define the application's command schedule.
*/
protected function schedule(Schedule $schedule): void
{
Log::debug('SCHEDULE RUN');
$schedule->job(new SyncChangesFrom1C)->everyMinute();
}
It work perfect, and run every minute.
Why it skip a minute before new run if used sub-minutes interval?