qf1410640014
Goto Top

URL Loggen mit PHP?

Hallo,

hat wer ein fertiges PHP-Skript zur Hand, das nicht mehr können muss, als z.B. alle 20 Sekunden einen URL auf Existenz zu prüfen und im Falle der Nichterreichbarkeit das irgendwo in eine Datei hinloggt .

Grund: es soll protokolliert werden, ob das Internet über Nacht irgendwann ausfällt, um dem Provider mit seinen 99.9% Verfügbarkeit auf den Zahn zu fühlen.

LG

Content-Key: 315117

Url: https://administrator.de/contentid/315117

Printed on: April 19, 2024 at 13:04 o'clock

Member: Yannosch
Solution Yannosch Sep 13, 2016 updated at 08:17:43 (UTC)
Goto Top
Hi,

<?php
$url = 'http://www.example.com';  
$array = get_headers($url);
$string = $array;
if(strpos($string,"200"))  
  {
    echo 'url exists';  
  }
  else
  {
    echo 'url does not exist';  
  }
?>

Müsstest dort den die IF & ELSE-Section anpassen damit du den Echo einfach in eine TXT mit Timestamp schreibst - dazu gibt es aber eineiges im Netz. Natürlich noch in eine Schleife packen um die Wdh. umzusetzen.

Aber wenn du nur testen willst ob die Website Up oder down ist - kann ich dir diesen Service ans Herz legen.
Uptime Robot

Grüße
Yannosch
Member: qf1410640014
qf1410640014 Sep 13, 2016 at 19:03:35 (UTC)
Goto Top
Hallo,

danke, hab den Codeschnippsel in ein eigenes Script eingebaut und entsprechend angepasst.

Der Zweck ist wirklich nur, zu sehen ob unser eigenes Netz "down" ist irgendwann in der Nacht.

LG
Member: IrunGoldstein
IrunGoldstein Sep 13, 2016 updated at 19:45:15 (UTC)
Goto Top
Hi,
noch eine curl variante:
<?PHP
//url der Seite
$url = 'http://www.xyz.com';  
// curl initialisieren
$ch = curl_init($url);
//header anfordern
curl_setopt($ch, CURLOPT_HEADER, true);    // kein download
curl_setopt($ch, CURLOPT_NOBODY, true); 
// ergebnis als string
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// maximale zeit der anfrage 
curl_setopt($ch, CURLOPT_TIMEOUT,10);

$output = curl_exec($ch);

$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);
// file name schreibrechte beachten
$file = 'logfile.txt';  
$data = $httpcode;

$timestamp = time();
$date = date("d.m.Y - H:i", $timestamp);  


$combined = $data . ' ' . $date;  
// schreibe in datei 

file_put_contents($file, $combined, FILE_APPEND | LOCK_EX);

<?

PS: ist am Smartphone zusammen getackert gerade, eventuelle formatierung der kommentare überprüfen und rausnehmen...

Kann man noch ausbauen in dem man am ende auf wunsch per if / else den status code >=200 bis <=300 nicht schreibt und nur 300 aufwärzt..

Noch einen cronjob auf die Datei nicht vergessen.

Edit: Zu lange die Seite nicht aktualisiert ist ja schon gelöst face-wink

Grüße
Member: Yannosch
Yannosch Sep 14, 2016 at 06:33:17 (UTC)
Goto Top
Wenn es aber Grundsätzlich um die Erreichbarkeit von außen geht -> würde ich einfach ein Monitoring von draußen laufen lassen.