38 lines
1.9 KiB
PHP
38 lines
1.9 KiB
PHP
<?php
|
|
// ============================================================================
|
|
// gardien.php - Échéance du chien de garde d'un bateau (synthèse §51, étape C).
|
|
// Lancé par une tâche ponctuelle systemd programmée par Rearmer_gardien() : si aucun signal n'est arrivé depuis le
|
|
// seuil, le bateau est déclaré injoignable (TB_Bateaux.Injoignable_depuis = date du dernier signal) et le traitement
|
|
// des alertes est demandé (alerte de perte de connexion, étape D).
|
|
// Usage : php gardien.php <numéro du bateau>
|
|
// ============================================================================
|
|
|
|
chdir("/var/www/html");
|
|
require_once __DIR__ . "/config/config.php";
|
|
require_once __DIR__ . "/fonctions_alertes.php";
|
|
|
|
$id_bateau = (int)($argv[1] ?? 0);
|
|
if ($id_bateau <= 0) { fwrite(STDERR, "Usage : php gardien.php <numéro du bateau>\n"); exit(1); }
|
|
|
|
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
|
|
$db = new mysqli("127.0.0.1", BDD_USER, BDD_PASSWORD, BDD_DATABASE, 3307);
|
|
$seuil = Reglage_entier($db, 'Seuil_injoignable', SEUIL_INJOIGNABLE_DEFAUT);
|
|
|
|
// Garde-fou (signal arrivé pendant le lancement de l'échéance, horloge...) : on revérifie l'ancienneté du dernier signal,
|
|
// et on ne déclare la perte qu'une fois (Injoignable_depuis encore NULL) :
|
|
$stmt = $db->prepare("UPDATE TB_Bateaux SET Injoignable_depuis = Date_dernier_signal
|
|
WHERE Cle_primaire=? AND Injoignable_depuis IS NULL AND Date_dernier_signal IS NOT NULL
|
|
AND Date_dernier_signal <= UTC_TIMESTAMP() - INTERVAL ? SECOND");
|
|
$stmt->bind_param('ii', $id_bateau, $seuil);
|
|
$stmt->execute();
|
|
$declare = ($stmt->affected_rows == 1);
|
|
$stmt->close();
|
|
$db->close();
|
|
|
|
if ($declare)
|
|
{
|
|
echo "Bateau {$id_bateau} : aucun signal depuis plus de {$seuil} s - déclaré injoignable.\n";
|
|
Demander_traitement_alertes($id_bateau);
|
|
}
|
|
else echo "Bateau {$id_bateau} : signal récent ou déjà déclaré injoignable - rien à faire.\n";
|