Aggiornamento minore tasks

This commit is contained in:
Thomas Zilio 2020-08-18 10:08:35 +02:00
parent bd7ab2a3a0
commit 5d71e62834
3 changed files with 9 additions and 2 deletions

View File

@ -59,7 +59,7 @@ $slot_duration = 5;
// Controllo sull'ultima esecuzione
$data = $data ? new Carbon($data) : null;
$minimo_esecuzione = (new Carbon())->addMinutes($slot_duration * 5);
if (!empty($data) && $minimo_esecuzione->greaterThanOrEqualTo($data)) {
if (!empty($data) && $minimo_esecuzione->lessThan($data)) {
return;
}
@ -94,6 +94,7 @@ while (true) {
// Calcolo del primo slot disponibile per l'esecuzione successiva
$inizio_iterazione = new Carbon();
$inizio_programmato_iterazione = $slot_minimo->copy();
$slot_minimo = $inizio_iterazione->copy()->startOfHour();
while ($inizio_iterazione->greaterThanOrEqualTo($slot_minimo)) {
$slot_minimo->addMinutes($slot_duration);
@ -109,13 +110,17 @@ while (true) {
$data_successiva = Carbon::instance($cron->getNextRunDate($adesso));
// Esecuzione diretta solo nel caso in cui sia prevista
if ($cron->isDue($inizio_iterazione) || $cron->isDue($adesso)) {
if (!empty($task->next_execution_at) && $task->next_execution_at->greaterThanOrEqualTo($inizio_iterazione) && $task->next_execution_at->lessThanOrEqualTo($adesso)) {
// Registrazione dell'esecuzione nei log
$logger->info($task->name.': '.$task->expression);
$task->execute();
}
// Salvataggio della data per l'esecuzione susccessiva
$task->next_execution_at = $data_successiva;
$task->save();
// Calcolo dello successivo slot
if ($data_successiva->lessThan($slot_minimo)) {
$slot_minimo = $data_successiva;

View File

@ -13,6 +13,7 @@ class Task extends Model
protected $table = 'zz_tasks';
protected $dates = [
'next_execution_at',
'last_executed_at',
];

View File

@ -4,6 +4,7 @@ CREATE TABLE IF NOT EXISTS `zz_tasks` (
`name` VARCHAR(255) NOT NULL,
`class` TEXT NOT NULL,
`expression` VARCHAR(255) NOT NULL,
`next_execution_at` timestamp NULL,
`last_executed_at` timestamp NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;