Sortis: Timeout-Schutz

Hallo,

ich lese per $getcol = file("$url") eine extern Seite ein. Die dauert manchmal einige Zeit.

Wie kann ich einen Timeout-Schutz erstellen, der nach z.B. 5 Sekunden die Aktion abbricht und eine Meldung "Server zur Zeit nicht erreichbar" ausgibt.

Vielen Dank für Eure Hilfe,

Sortis

  1. Wie kann ich einen Timeout-Schutz erstellen, der nach z.B. 5 Sekunden die Aktion abbricht und eine Meldung "Server zur Zeit nicht erreichbar" ausgibt.

    Soviel ich weiß, geht das nur bei Sockets, aber nicht direkt beim Dateiöffnen. Du müßtest also das Protokoll zumindest teilweise nachbauen.

    Ich habe das mal vor einiger Zeit so gemacht:

    <?php
    function hole ($server, $datei) {
      $sock = fsockopen($server, 80, $errno, $errstr, 15);
      if (!$sock) {
     return("");
     } else {
      fputs ($sock, "GET /".$datei." HTTP/1.0\r\nHost: ".$server."\r\nAccept: text/html, text/plain\r\nUser-Agent: MaddinsPHPget(maddin@mails.at)\r\n\r\n");
       $header=fgets ($sock,1024);

    if(substr_count($header,"302")){
         do {
           $header=fgets ($sock,1024);
         } while(substr_count($header, "Location:")==0);
         $file=(hole($server,trim(substr($header,11))));
         return($file);
       }
       //
        do {
       $header=fgets ($sock,1024);

    } while(strlen(trim($header))>0);

    while (!feof($sock)) {

    $file[] = fgets ($sock,1024);
         }
         fclose ($sock);
    }
     return($file);
     }

    ?>

    Falls sizeof($file)<2 ist, konnte die Datei nicht geladen werden.

    Wehe einer erzählt mir jetzt, daß das auch einfacher geht!