Trois états de fonctionnement en fonction d'un fichier CSV

Eléphanteau du PHP | 25 Messages

17 nov. 2021, 10:32

Bonjour,
J'ai une liste de région avec des serveurs dans un fichier CSV qui est auto mis à jour en fonction si le serveur ping ou non dans un état OK ou HS.
Exemple

Region1;Ville1;192.168.0.1;HS;
Region1;Ville1;192.168.0.2;OK;
Region1;Ville2;192.168.0.3;OK;
Region1;Ville2;192.168.0.4;OK;
Region1;Ville3;192.168.0.5;HS;
Region1;Ville3;192.168.0.6;HS;

Mon scripts actuel me permet d'avoir 2 états Vert (Quand tout est OK) et Orange (Quand au moins un serveur est HS)
Maintenant j'aimerais avoir un 3eme état qui est Rouge (Quand tous les serveurs de la même ville sont HS)

Mon script actuel :
Code :
<?php
$serveurs = array();
$i = 0;
 
// chargement du fihcier dans un tableau multi dimentionnel
$fp = @fopen("serveurs.csv", "r");
if ($fp) {
    while (($data = fgetcsv($fp, 512, ';')) !== false) {
        if ($i == 0) { // ignore entete
                $i++;
                continue;
        }
        // structure du tableau : region => statut / nb_OK / nb_HS / liste => statut / nb_OK / nb_HS / ip => statut
        if (!array_key_exists($data[0], $serveurs))
                $serveurs[$data[0]] = array('statut' => 'OK', 'nb_OK' => 0, 'nb_HS' => 0, 'liste' => array());
        if (!array_key_exists($data[1], $serveurs[$data[0]]['liste']))
                $serveurs[$data[0]]['liste'][$data[1]] = array('statut' => '<img src=/vert.gif>', 'nb_OK' => 0, 'nb_HS' =>0, 'ip' => array());
 
        $serveurs[$data[0]]['liste'][$data[1]]['ip'][$data[2]] = $data[3];
        $serveurs[$data[0]]['nb_OK']++;
        $serveurs[$data[0]]['liste'][$data[1]]['nb_OK']++;
        if ($data[3] == "HS") {
                $serveurs[$data[0]]['statut'] = "<img src=/". ("orange.gif") .">";
                $serveurs[$data[0]]['nb_HS']++;
                $serveurs[$data[0]]['liste'][$data[1]]['statut'] = "<img src=/". ("orange.gif") .">";
                $serveurs[$data[0]]['liste'][$data[1]]['nb_HS']++;
        }
    }
    if (!feof($fp)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($fp);
}
?>
Merci beaucoup de votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 nov. 2021, 13:30

A l'heure actuelle tu as un décompte des serveurs HS dans nb_HS, je serai toi je ferrai la même chose en ajoutant la ville.
Et ensuite à la fin de ton traitement tu comptes le nombre de serveur par ville et le nombre de serveur HS de cette ville.
Si ils sont tous HS, tu met à jour ton tableau pour passer le statut à rouge
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 1 Messages

17 nov. 2021, 14:51

Bonjour,

Ces lignes de codes viennent de m'inspirer pour mes projets.

Merci pour le partage,

Eléphanteau du PHP | 25 Messages

17 nov. 2021, 15:04

De rien si sa peux aider!!!
Moi je galère malgré les explications de "@rthur" mais je continu à chercher.