URL aus Datenbank auf Erreichbarkeit prüfen (on-/off-Bild)

$onoffline = fgets($fp, 128); hatte ich in $onoffline ="online"; gemacht. aber dann dauert das ewig lange bis meine seite geladen ist und der Status da steht. aber wie gesagt Dennoch ist alles ONLINE obwohl erfundene adresse geschrieben sind.

ich hatte es zb mit der url http://www.hastewaskannste-odernicht.de versucht. und das selbe mir Ohne http:// alles Online.. verstehe ich selber nicht. Und zum anderen weis ich ja nicht genau wie ich es ausgeben kann das es in roter farbe OFFLINE steht und in grüner farbe ONLINE. Wenn ich am $onoffline = fgets($fp, 128); rum bastel ist alles voll lahm. da brauch das Script ewig um was zu prüfen.


@ZodiacXP wie meinst du das?

Zitat:

Wie SvenMintel sagt, solltest du uns wirklich mal deine Art der Prüfung nennen.
Oder die URL bei welcher es so seien sollte. Zitat Ende

Mfg...Hangrefer
 
Zuletzt bearbeitet:
$onoffline = fgets($fp, 128); hatte ich in $onoffline ="online"; gemacht. aber dann dauert das ewig lange bis meine seite geladen ist und der Status da steht. aber wie gesagt Dennoch ist alles ONLINE obwohl erfundene adresse geschrieben sind.

Wenn eine Seite nicht online ist, dauert es 5 Sekunden lang, dies festzustellen, denn das hast du bei fsockopen() als Timeout-Parameter angegeben....deshalb dauert es.

Dass alle Seiten als "online" deklariert werden, liegt vielleicht daran, dass du die Variable $onoffline im Fehlerfall nicht mit einem anderen Wert (offline) belegst...zumindest geht das aus dem zuletzt geposteten Skript nicht hervor.

Den fputs-Teil kannst du dir dabei übrigens sparen, solange du keine spezielle Adresse auf dem Host kontaktierst.
Code:
<?php
$hosts=array(
  'www.google.de',
  'www.hastewaskannste-odernicht.de',
  'www.tutorials.de'  
);
foreach($hosts as $host)
{
  $fp = @fsockopen($host, 80, $errno, $errstr, 5);
  if(!$fp)
  {
    $onoffline='offline';
  }
  else
  {
    $onoffline='online';
    fclose($fp);
  }
  echo '<hr />'.$host.':'.$onoffline;
}
?>
 
@Sven: Auch erreichbare Server, die 404 oder 500 liefern sollen als Offline angezeigt werden. Daher dieser weg.

$onoffline = fgets($fp, 128); hatte ich in $onoffline ="online"; gemacht. aber dann dauert das ewig lange bis meine seite geladen ist

Das liegt an dem Server den du erreichen willst, nicht an deiner Seite.
Wenn dir das zu langsam ist, dann lass ein CronJob (u.U. http://www.cronjob.de) laufen, der die Seiten täglich / stündlich prüft und das Ergebnis in eine seperate Tabelle ablegt.


Dennoch ist alles ONLINE obwohl erfundene adresse geschrieben sind.
Nochmal: Wie lässt du PHP das Prüfen? Bisher kriegst du nur eine Antwort von dem Server, die für PHP natürlich schlichter nichtsaussagender Text ist.
Von daher: Womit prüfst du das? Woran siehst du das?

@ZodiacXP wie meinst du das?
s.o.
 
Nochmal: Wie lässt du PHP das Prüfen? Bisher kriegst du nur eine Antwort von dem Server, die für PHP natürlich schlichter nichtsaussagender Text ist.
Von daher: Womit prüfst du das? Woran siehst du das?

Ich verstehe echt nicht was du damit meinst. Ich lasse doch das Script Prüfen ob die url erreichbar ist. wenn das nicht der fall ist soll es offline angezeigt werden. Und wenn ja dann eben Online.

Ich dachte das wäre schon die Prüfung von php. Was anderes fällt mir leider nicht ein. Aber ich kann ja mal erkläre wie ich das angedacht hatte.

Also:

Ich habe mir ja die Ausgabe der Adresse durch eine while schleifen gebaut. Mit $row["kunden_website"]; soll die Adresse aus der Datenbank in das Script fsockopen geholt werden. Dies klappt ja ohne Probleme. Jetzt möchte ich aber auch, das der wehrt, in eine $var gespeichert wird, mit der dann in meinem Template der Status ausgegeben werden soll. Das allerdings mach das Script nicht. Da ich nicht weis, wie ich das in eine $var Speichern soll.

So lasse ich das alles Prüfen. Was anderes prüfe ich ja nicht oder?. Ich hoffe nun kannst du mir weiter helfen. Staune eh das du dich noch weiter mit mir beschäftigst da ich ja anscheinend nichts Kapiere...

@Sven: auch damit werden Webseite mit Facke Adresse als Online angezeigt. ^^

Mfg...
 
@Sven: auch damit werden Webseite mit Facke Adresse als Online angezeigt. ^^

Mfg...
Das möchte ich anzweifeln ;-]
Sollte es dennoch so sein, dass mein Codeschnipsel dir die Ausgabe
Code:
www.hastewaskannste-odernicht.de:online
liefert, müsste man die Lösung des hier besprochenen Problems tatsächlich woanders suchen als in deinem Skript :-)
 
Mmmh, dann läuft auf dem Server etwas schief, sag ich mal :-)

Möglich wäre bspw., dass die Verbindung über einen Proxy hergestellt wird, hier mal ein Kommentar dazu aus dem Online-Manual:
laisebrown at gmail dot com
26-Oct-2008 11:30

When you're connecting through a proxy server you can't rely on fsockopen returning false to indicate that the connection has failed. (This also applies to fgets and fwrite.)

To check whether the proxy succeeded in contacting the real target host, you need to look for the http response code in the headers that get returned. Typically, if the proxy was unable to reach the host, you'll find a line containing something like:
HTTP/1.0 503 Service Unavailable
 
Ich verstehe echt nicht was du damit meinst. Ich lasse doch das Script Prüfen ob die url erreichbar ist.

Letzteres ist meine Frage: Wo? Zeigen!

Jetzt möchte ich aber auch, das der wehrt, in eine $var gespeichert wird, mit der dann in meinem Template der Status ausgegeben werden soll. Das allerdings mach das Script nicht. Da ich nicht weis, wie ich das in eine $var Speichern soll.

$var .= fgets($fp);
So wie du es hattest.

So lasse ich das alles Prüfen. Was anderes prüfe ich ja nicht oder?

Prüfung? Du prüfst ob in der Variable etwas drin steht? So verstehe ich deinen Satz.
Wenn nun der Server liefert: "Ich bin kaputt" hieße das bei so einer Prüfung, der Server ist "Online".

Nein. Hier hat es doch schon wunderbar geklappt:
http://www.tutorials.de/forum/php/3...eichbarkeit-pruefen-off-bild.html#post1757629

Da wurden auch schöne Sachen in $onoffline geschrieben. Aus der Zeichenkette (String) musst du nur noch die Zahl nach dem HTTP/1.1 erreichen. Das geht allein mit substr():
http://de.php.net/manual/de/function.substr.php oder http://www.selfphp.de/funktionsreferenz/string_funktionen/substr.php
 
Na dann ist ja gut das es so schon mal hinhaut. Nun muss ich nur noch wissen wie genau ich substr() genau anwenden muss. Den ich möchte ja, das zum schluss entweder Online oder Offline im Template steht. Die beiden Seiten die du mir zeigst da sehe ich leider nicht durch. Die beispiele Die beispiele geben mir recht wenig ansatz wie ich die reihen folge erstellen muss.

man man... ich komme mir langsam vor als wäre ich total behämmert :-(
 
Zurück