Aggiunto controllo sull'esecuzione del cron
This commit is contained in:
parent
fce39cc05b
commit
b680fdc4ad
4
cron.php
4
cron.php
|
@ -46,6 +46,7 @@ $logger->pushHandler($handler);
|
|||
$ultima_esecuzione = Cache::get('Ultima esecuzione del cron');
|
||||
$data = $ultima_esecuzione->content;
|
||||
|
||||
$in_esecuzione = Cache::get('Cron in esecuzione');
|
||||
$cron_id = Cache::get('ID del cron');
|
||||
|
||||
$disattiva = Cache::get('Disabilita cron');
|
||||
|
@ -79,6 +80,7 @@ $number = 1;
|
|||
while (true) {
|
||||
$disattiva->refresh();
|
||||
$cron_id->refresh();
|
||||
$in_esecuzione->refresh();
|
||||
|
||||
// Controllo su possibili aggiornamenti per bloccare il sistema
|
||||
$database_online = $database->isInstalled() && !Update::isUpdateAvailable();
|
||||
|
@ -94,6 +96,7 @@ while (true) {
|
|||
// Risveglio programmato tramite slot
|
||||
$timestamp = $slot_minimo->getTimestamp();
|
||||
time_sleep_until($timestamp);
|
||||
$in_esecuzione->set(true);
|
||||
|
||||
// Registrazione dell'iterazione nei log
|
||||
$logger->info('Cron #'.$number.' iniziato', [
|
||||
|
@ -160,6 +163,7 @@ while (true) {
|
|||
'next-slot' => $slot_minimo->toDateTimeString(),
|
||||
'next-slot-unix' => $timestamp,
|
||||
]);
|
||||
$in_esecuzione->set(false);
|
||||
|
||||
// Registrazione dell'esecuzione
|
||||
$adesso = new Carbon();
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace API\Common;
|
|||
use API\Interfaces\CreateInterface;
|
||||
use API\Interfaces\RetrieveInterface;
|
||||
use API\Resource;
|
||||
use Carbon\Carbon;
|
||||
use Models\Cache;
|
||||
use Tasks\Log;
|
||||
|
||||
|
@ -23,6 +24,8 @@ class Task extends Resource implements RetrieveInterface, CreateInterface
|
|||
|
||||
public function create($request)
|
||||
{
|
||||
$database = database();
|
||||
|
||||
// Rimozione della registrazione del cron attuale
|
||||
$ultima_esecuzione = Cache::get('Ultima esecuzione del cron');
|
||||
$ultima_esecuzione->set(null);
|
||||
|
@ -35,8 +38,23 @@ class Task extends Resource implements RetrieveInterface, CreateInterface
|
|||
$disattiva = Cache::get('Disabilita cron');
|
||||
$disattiva->set(null);
|
||||
|
||||
// Salvataggio delle modifiche
|
||||
$database->commitTransaction();
|
||||
|
||||
// Attesa della conclusione per il cron precedente
|
||||
$in_esecuzione = Cache::get('Cron in esecuzione');
|
||||
while ($in_esecuzione->content) {
|
||||
$timestamp = (new Carbon())->addMinutes(1)->getTimestamp();
|
||||
time_sleep_until($timestamp);
|
||||
|
||||
$in_esecuzione->refresh();
|
||||
}
|
||||
|
||||
// Chiamata al cron per l'avvio
|
||||
$this->request();
|
||||
|
||||
// Riavvio transazione
|
||||
$database->beginTransaction();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,6 +6,7 @@ use API\Exceptions\InternalError;
|
|||
use API\Exceptions\ResourceNotFound;
|
||||
use Auth;
|
||||
use Models\ApiResource as Resource;
|
||||
use PDOException;
|
||||
|
||||
/**
|
||||
* Classe per la gestione delle API del progetto.
|
||||
|
|
|
@ -22,7 +22,7 @@ CREATE TABLE IF NOT EXISTS `zz_tasks_logs` (
|
|||
INSERT INTO `zz_cache` (`id`, `name`, `content`, `valid_time`, `expire_at`) VALUES
|
||||
(NULL, 'Ultima esecuzione del cron', '', '1 month', NULL),
|
||||
(NULL, 'ID del cron', '', '1 month', NULL),
|
||||
(NULL, 'Riavvia cron', '', '1 month', NULL),
|
||||
(NULL, 'Cron in esecuzione', '', '1 month', NULL),
|
||||
(NULL, 'Disabilita cron', '', '1 month', NULL);
|
||||
|
||||
INSERT INTO `zz_tasks` (`id`, `name`, `class`, `expression`, `last_executed_at`) VALUES
|
||||
|
|
Loading…
Reference in New Issue