Bonjour,
j'aimerais faire des pings depuis une liste de serveur qui se trouve dans ma BDD.
Pour cela pas de soucis.
Le problème viens du faite que j'aimerais inscrire les résultats dans un fichier CSV de la manière suivante : LigneA;(nom de la table);nom du serveur;(resultat du ping);nom du serveur
Voici se que j'ai réussi a faire :
Tout fonctionne parfaitement sauf le nom de la table ou il fait le ping, je n'arrive pas à prendre l'info pour la mettre dans "$res[$c][1] = ".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <?php include "PDO.php"; $reponse = $bdd->query('SELECT * FROM base1 UNION ALL SELECT * FROM base2'); { while ($donnees = $reponse->fetch()) { $c2 = 0; // compteur $ping = exec("ping -n 1 {$donnees['nom']}"); $OK = (substr($ping, -2) != 'ms') ? "HS" : "OK"; $c2++; $serveurs = "test.csv"; $res = array(); $c = 0; $ligne = "LigneA"; $fp = fopen($serveurs, 'r'); // ouverture du fichier while (($data = fgetcsv($fp, 0, ';')) !== FALSE) { $res[$c] = $data; $res[$c][0] = $ligne; $res[$c][1] = $res[$c][2] = $donnees['nom']; $res[$c][3] = $OK; $res[$c][4] = $donnees['nom']; } @fclose(@$fp); // écriture du fichier $fp = fopen($serveurs, 'a'); foreach($res as $data) fputcsv($fp, $data, ';'); fclose($fp);}} ?>
Donc j'aimerais qu'il me note base1 ou base 2 en fonction du serveur qu'il ping.
Petite demande supplémentaire:
J'ai environ 100 tables, existe t-il une autre manière que de mettre des UNION ALL entre chaque SELECT ou alors un existe une manière de prendre toutes les tables en même temps ?
Merci beaucoup.
Partager