-
gateway
Gast
PHP exec() Problem
Hi Leute...
Ich hab ein ganz fettes Prob mit PHP....
$query2 = "SELECT * FROM pinghosts ORDER BY iphost";
$hostlist2 = mysql_query($query2);
echo "<table border=1 cellspacing=1 cellpadding=1>";
echo "<tr><td bgcolor=\"BBBBBB\">Hostname</td><td bgcolor=\"BBBBBB\">Beschreibung</td><td bgcolor=\"BBBBBB\">Status</td></tr>";
while($row2 = mysql_fetch_object($hostlist2))
{
echo "<tr><td bgcolor=\"BBBBFF\">";
echo $row2->iphost;
echo "</td><td bgcolor=\"BBBBFF\">";
echo $row2->description;
echo "</td><td";
$pingstatus = exec("ping -n 1 ".$row2->iphost,$directoutput,$returnval);
$pingstat = explode("(",$directoutput[6]);
$pingstatclean = explode("%",$pingstat[1]);
$lost = $pingstatclean[0];
if($lost == 0)
{
echo " bgcolor=\"00CC00\">pingable".$lost;
}
else
{
echo " bgcolor=\"CC0000\">not pingable".$lost;
}
echo "</td></tr>";
}
echo "</table>";
Das Problem ist nun... Bei der while schleife fürs auslesen jeder einzelnen Zeile nimmt die Variable $lost, also die die den Datenverlust beim Ping anzeigt den ersten RICHTIGEN wert der ersten Zeile an. Allerdings dieser Wert bleibt dann unverändert für alle anderen Zeilen...
Also der Eintrag für alle anderen Dinge wie hostname oder beschreibung ändern sich und nur der WErt der neu berechnet werden soll wird nicht neu berechnet... Vielleicht ist es ja schon spät und ich checks gerade nicht... Wäre für jede Hilfe dankbar..
LG
Gate
-
Urgestein
Hallo,
Du solltest das Array $directoutput bei jedem Durchlauf freigeben, da exec() sonst an das Array anhängt anstatt es neu zu beschreiben wenn das Array bereits Werte enthält.
Logisch das der Wert dann unverändert bleibt beim 2. Durchlauf, da ja $directoutput[6] dann immer noch den selben Wert enthält den es beim ersten Durchlauf erhalten hat 
Deine While-Schleife sollte also aus aussehen, dann sollte es gehen:
while($row2 = mysql_fetch_object($hostlist2))
{
echo "<tr><td bgcolor=\"BBBBFF\">";
echo $row2->iphost;
echo "</td><td bgcolor=\"BBBBFF\">";
echo $row2->description;
echo "</td><td";
unset($directoutput);
$pingstatus = exec("ping -n 1 ".$row2->iphost,$directoutput,$returnval);
$pingstat = explode("(",$directoutput[6]);
$pingstatclean = explode("%",$pingstat[1]);
$lost = $pingstatclean[0];
if($lost == 0)
{
echo " bgcolor=\"00CC00\">pingable".$lost;
}
else
{
echo " bgcolor=\"CC0000\">not pingable".$lost;
}
echo "</td></tr>";
}
Cu
-
gateway
Gast
Jop genau das wars... bin zwar schon heute nachmittag draufgekommen aber trotzdem besten dank....
LG
Gate
Berechtigungen
- Neue Themen erstellen: Ja
- Themen beantworten: Ja
- Anhänge hochladen: Ja
- Beiträge bearbeiten: Ja
-
Foren-Regeln