Guten Morgen zusammen,
ich sitze nun die ganze Nacht an einer Abfrage die mich zum verzweifeln bringt ;(
Ich habe eine sehr grosse DB (MySQL) in der Hoster stecken, diese Hoster werden regelmässig angepingt, die Ergebnisse werden wiederum gespeichert.
Nun möchte ich alle Hoster Rausfiltern die Laut dem Ping Ergebniss über 99% liegen.
Funktionnieren tut das Script nur leider mir sehr sehr grosser Serverlast (CPU 90%) loadaverage beinahe 10.
Das Ping Ergebniss begrenzt sich auf 0=erfolgreich 1=erfolglos.
Ich suche nach einer Möglichkeit nach z.B. jeder 20 Abfrage in der Whileschleife eine Ruhephase im Script einzubauen um dem Server Zeit zur Erholung zu geben.
Ich habe euch die Schleife mitgesendet, ich bin euch für jede Art der Verbesserung dankbar.
Die Schleife:
$data=mysql_query("SELECT hoster_id FROM watch GROUP BY hoster_id ORDER by hoster_id LIMIT ".$_POST["von"].",".$_POST["max"]." ");
while($row=mysql_fetch_array($data))
{
$offline = mysql_query("SELECT id FROM watch WHERE hoster_id='$row[hoster_id]' AND ping='0' ORDER by hoster_id LIMIT ".$_POST["von"].",".$_POST["max"]." ");
$total = mysql_query("SELECT id FROM watch WHERE hoster_id='$row[hoster_id]' ORDER by hoster_id LIMIT ".$_POST["von"].",".$_POST["max"]." ");
$gesamt = mysql_num_rows($offline);
$erreicht = mysql_num_rows($total);
$prozent = $gesamt*100/$erreicht;
if($erreicht!='' && $gesamt!='' && $prozent > "99"){
$bcc .= "$row[hoster_id]\n";
$i++;
}
free($offline,$total);
clear($gesamt,$erreicht,$prozent);
}
Die Hauptlast liegt im SELECTEN der einzellnen Online und Offline Ergebnisse der einzellnen Hoster ...
Ich danke euch für eure Hilfe ...
Viele Grüße
Chris