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 :
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);}}
 
?>
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] = ".
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.