Internetverbindung per php-Script prüfen

Eiszwerg

Erfahrenes Mitglied
Moin Moin,

da mein Router (BR-41 von Jetway) keine Logs über fehlgeschlagene Verbindungen führt, habe ich beschlossen, ein Script zu basteln, welches in bestimmten Abständen die Verfügbarkeit einer Site prüfen soll.
Der Grund liegt darin begründet, dass mein ISP ODER mein Router sporadisch die Verbindung kappt.
Da ich den ISP in Verdacht habe, würde ich das gerne belegen können :-)

Nun zum Problem:
Wie mache ich eine Schleife, die nur jede Minute ausgeführt wird?
Bin ehrlich gesagt mit den Zeitstempeln und deren Formatierung etwas überfordert.

Hier der bisherige Code:
PHP:
<?php
while ($a =="") {                                                           //Endlos-Schleife, aber nicht gut
$zeit =date ("G:i:s ");                                                    //Ausgabe der Zeit festlegen   
$fp = fsockopen ("www.versatel.de", 80, $errno, $errstr, 10); //Verbindung aufbauen       
if (!$fp) {                                                                       //Wenn Site nicht erreichbar
   echo "$zeit --- $errstr --- ($errno)<br /><br />";             //Fehler ausgeben
}                                                                                  
fclose($fp);                                                                   //Verbindung schliessen  
}
?>

Ich habe, wie man sieht, derzeit eine Endlos-Schleife am Laufen, was so zwar halbwegs funktioniert, aber nicht sinnig ist, da zuviele Ressource benötigt werden oder das Script abbricht.
Wie kann ich hier klug ansetzen, um nur jede Minute einen Durchgang zu starten?

Gruss Eiszwerg
 
Das ganze ding macht dahingehen keinen Sinn, da du ja ne max. Execution time hast die du entsprechend hoch setzen müsstest.
Ich würde daher eher einen Scheduler Dienst oder cron / anacron unter Linux nehmen, der das Script einmal pro Minute aufruft.
 
Leider habe ich diese tollen Möglichkeiten nicht.
Sonst würde ich nicht nach eben dieser Lösung fragen.
Trotzdem danke für den Tipp :-)
 
Habe das Ganze nun doch so gelöst, dass ich die Ergebnisse in eine DB schreibe.
Die Site wird per meta-Tag-Reload erneut geöffnet.

Für Interessierte:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Verf&uuml;gbarkeit einer bestimmten Site ... by www.my-zwerg.de</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="refresh" content="60; url=http://www.my-zwerg.de/router/index.php">
  </head>
  <body>
	<?
	$fp = fsockopen ("www.my-zwerg.de", 80, $errno, $errstr, 15); 
	$zeit=date("H:i:s");
	if (!$fp) {
      		echo "<P style=\"color:FF0000;\">$zeit ::: $errstr ($errno) ... <b>Eintrag erstellen</b></P><br />";
      		include ("vars.php");
      		mysql_connect ($server,$user,$pw) or die ("Es besteht keine DB Verbindung :o(");
      		$dbanfrage = "INSERT INTO $table1 VALUES ('0','$zeit','$errstr','$errno')";
      		$result = mysql_db_query ($db, $dbanfrage) or die (mysql_error());
		} else {
		echo "<P style=\"color:228B22;\">$zeit ::: Alles Okay ... <b>Kein Eintrag</b></P><br />";
		fclose($fp);
	} 
	include ("vars.php");
	mysql_connect ($server,$user,$pw) or die ("Es besteht keine DB Verbindung :o(");
	$dbanfrage = "SELECT * FROM $table1 ORDER BY id DESC";
	$result = mysql_db_query ($db, $dbanfrage);
	echo"<br><br><b>History Logfile</b>";
	echo "<table>";
	echo "<tr><td><b>Zeit</b></td><td><b>Fehlerbeschreibung</b></td><td><b>Fehlernummer</b></td></tr>";
	while ($Ausgabe = mysql_fetch_array ($result))
	{
		echo "<tr><td>$Ausgabe[zeit]</td><td>$Ausgabe[fehler]</td><td>$Ausgabe[nummer]</td></tr>";
	}
	echo"</table>";
	?>
  </body>
</html>

Leider sieht es hier nicht so geordnet aus wie bei mir :(
 
Zurück