steve: Link und MySql auf Verfügbarkeit prüfen (timeout?)

Hallo Forumler,

Ich habe auf meiner HP per include() eine Datei.php von einem anderen Webspace eingebunden, wenn nun aber der Space down ist, bringt mir include() einen 404-error, und sprengt mein komplettes layout.
Habe folgendes probiert:

$link = "http://www.domain.de/datei.php";
$test = @fopen($link,"r");
if ($test)
        { echo "geht!";}
else
        { echo "geht nicht"; }

gebe ich nun eine
-gültige url an: $test = geht
-ungültige url an: $test = geht nicht
-gültige url die down ist (404) an: $test = geht

das gleiche Problem habe ich mit meiner (Statistik-)MySQL auf dem gleichen Space:
dauert ewig bei schlechter Erreichbarkeit: kann man da nicht irgendwo nen timeout einstellen??

Danke für eure Hilfe...
Steve.

  1. Hallo,
    überprüf doch einfach ob es die Datei gibt.

    $datei = 'www.123.de';
    if(file_exists($datei))
    {
    }

    Ich glaube das bringt mehr

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. man, wie  bescheuert kann man eigentlich sein....
      hätte ich ja gleich draufkommen können.

      Hauptsache kompliziert !

      Danke für die schnelle, einfache und gute Hilfe ;-)

      1. Hallo,
        kein Problem ;)

        Das ist in PHP halt so, das man vieles umständlich macht.

        MFG
        Andavos

        --
        http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    2. Hallo Andavos,

      $datei = 'www.123.de';

      ein "http://" schadet nicht...

      if(file_exists($datei))

      <zitat src="http://de.php.net/file_exists">
      Anmerkung: This function will not work on remote files as the file to be examined must be accessible via the servers filesystem.
      </zitat>
      auf Deutsch: es funktioniert nur auf dem lokalen Dateiensystem, nicht aber wenn du auf die Datei nur per url zugreifen kannst.

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    3. Hallihallo,

      überprüf doch einfach ob es die Datei gibt.

      $datei = 'www.123.de';
      if(file_exists($datei))
      {
      }

      <cite>
      Diese Funktion funktioniert nicht bei entfernten Dateien; Die Datei, deren Existenz überprüft werden soll, muss über das Dateisystem des Servers erreichbar sein.
      </cite>

      Grüße

      Tom

  2. Hallo,

    Ich habe auf meiner HP per include() eine Datei.php von einem anderen Webspace eingebunden, wenn nun aber der Space down ist, bringt mir include() einen 404-error, und sprengt mein komplettes layout.

    Folgendes sollte Dir weiterhelfen:
    http://www.dclp-faq.de/q/q-code-links-testen.html

    Prinzip: Wenn der HTTP-Status-Code etwas anderes als 200 ist,
    zeigst Du lieber nichts an.

    include() ist bei fremden Inhalten gefaehrlich,
    denn wenn darin PHP-Code ist, wird dieser _bei_Dir_ ausgefuehrt.
    Es gibt genuegend andere Mittel, um Text einzubinden/durchzuschleusen,
    z.B. readfile() oder fpassthru().

    Gruesse,

    Thomas

    1. Hallo Thomas,

      include() ist bei fremden Inhalten gefaehrlich,
      denn wenn darin PHP-Code ist, wird dieser _bei_Dir_ ausgefuehrt.
      Es gibt genuegend andere Mittel, um Text einzubinden/durchzuschleusen,
      z.B. readfile() oder fpassthru().

      schon klar, das sind aber keine "fremde Inhalte" sondern nur mein "Bilder-Server".
      Die von mir betreute HP liegt auf puretec, und als der Space zu klein wurde (wg.Party-Bilder einer Discothek) habe ich kurzerhand einen günstigen Space gemietet, und lege da jetzt nur die Bilderverzeichnisse an, und include sie auf die HP.
      Also alles im grünen Bereich ;-)

      Grüsse und Danke!

      1. Hallo,

        schon klar, das sind aber keine "fremde Inhalte" sondern nur mein "Bilder-Server".

        Von dem her OK. ;-)
        Das Prinzip mit dem HTTP-Status-Code sollte Dir also weiterhelfen,
        um zu schauen, ob die Ressource auf dem anderen Server
        erreichbar ist.

        Gruesse,

        Thomas

        1. Hallo,

          Bilder würde ich trotzdem nicht mit include() laden.

          Unabhängig davon kannst Du das Ergebnis von include() seit PHP 4.23 (doer sogar schon früher) abfragen.

          $ok = @include($ressource);

          und wenn das nicht geht, kann man die Fehlervariable von PHP abfragen

          @include($ressource);
          $fehler = $php_errormsg;

          Ich habe bisher zwar keine vernünftige Doku darüber gefunden, aber es scheint sich dabei um eine Funktion zu handeln, die sich aber hinter dem Bezeichner $php_errormsg versteckt. Wenn man sie aufruft (ausliest) wird der Wert automatisch auf '' (Leerstring) zurückgestzt.

          Wenn also in $fehler nach der erfolgten Zuweisung etwas drinsteht, dann hat include() leider nicht geklappt.

          Grüße

          Tom