Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Timeoutlimit beim öffnen einer Datei setzen

  1. #1
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567

    Timeoutlimit beim öffnen einer Datei setzen

    Hi@all

    Ist es möglich, dass, wenn ich z.B. mit fopen() eine Datei öffnen möchte, ich dem ganzen eine Zeit von ca. 3 Sekunden oder so gebe? Wenn die Datei innerhalb dieser Zeit nicht geöffnet wurde wird der boolsche Wert fals zurückgegeben, aber das Script soll nicht einfach abbrechen, da das ganz an eine Bedingung angeschlossen ist.

    Cu
    André
    C und C++

  2. #2
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo!
    Ich würds folgendermaßen machen
    Ein Prozess, der den anderen Überwacht und anhält, falls er länger als eine vorbestimmte Zeit läuft... hmm... stichwort Multithreading, aber das geht mit PHP nicht.
    Du könntest natürlich mal in den PHP Sourcen stöbern und die fopen Funktion so manipulieren, dass sie nach drei Sekunden abbricht... aber das ist wohl auch keine Lösung
    Vielleicht fällt ja noch jemandem was ein.


  3. #3
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi
    Original geschrieben von Gaert
    Hallo!
    Ich würds folgendermaßen machen
    Ein Prozess, der den anderen Überwacht und anhält, falls er länger als eine vorbestimmte Zeit läuft... hmm... stichwort Multithreading, aber das geht mit PHP nicht.
    Du könntest natürlich mal in den PHP Sourcen stöbern und die fopen Funktion so manipulieren, dass sie nach drei Sekunden abbricht... aber das ist wohl auch keine Lösung
    Vielleicht fällt ja noch jemandem was ein.
    Gut, so hab ich mir die Lösung nun nicht vorgestellt Vieleicht geh ich da aber auch falsch herran. Wäre wohl besser, wenn ich mein Vorhaben schildere. Also ich möchte eigentlich eine simple Erreichbarkeitsprobe in php basteln. Wenn die abzufragende Seite erreichbar ist soll auf sie weitergeleitet werden, mit header() hat das nicht klappen wollen , wenn sie nicht erreichbar ist soll ein Text ausgegeben werden.

    Cu
    André
    C und C++

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Die Erreichbarkeit eines (HTTP-)Server kannnst du mit dieser Funktion überprüfen:
    Code:
    function getAvailability($server)
    {
      if (!($sock = fsockopen($server, 80, $errno, $errstr, 5)))
        return false;
        
      fputs($sock, "HEAD / HTTP/1.0\r\nHost: $server\r\n\r\n");
      
      while (!feof($sock))
        $tmp = fgets($sock, 1024);
      
      fclose($sock);
      
      return true;
    }
    Die 5 beim fsockopen()-Aufruf ist übrigens das Timeout nach dem du gesucht hast

  5. #5
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi@all

    Ahh...danke. Das sieht ja schon mal gut aus. Werd es dann mal testen. Vielen Dank.

    Cu
    Andre
    C und C++

  6. #6
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi@all

    Also irgenwie wird, obwohl der Server erreichbar ist, der Funktionswert auf false gestzt. Ich weis jetzt nicht, ob ich vieleicht bei der Außführung falsch gemacht habe. Hier mal der code
    PHP-Code:
    <?php
        
    function getAvailability($server)
        {
            if (!(
    $sock fsockopen($server80$errno$errstr10)))
                return 
    false;
        
            
    fputs($sock"HEAD / HTTP/1.0\r\nHost: $server\r\n\r\n");
      
            while (!
    feof($sock))
            
    $tmp fgets($sock1024);
      
            
    fclose($sock);
      
        return 
    true;
        }

        
    $server "http://serve1.dyndns.org";
        
    $test getAvailability($server);
        
        if(
    $test == true)
        {
            echo 
    "<a href=http://serve1.dyndns.org>Hier geht es weiter</a>";

        }
        else
        {
            echo 
    "Da der Server, noch, nicht bei einem Provider sondern bei mir zu Hause steht<br>";
            echo 
    "kann es sein, dass er, wie jetzt auch, nicht erreichbar ist. Versuch es bitte später nochmal.";
            echo 
    "<br><br>";
            echo 
    "<a href=mailto:webmaster@islandpferdeforum.de>webmaster@islandpferdeforum.de</a>";
        }
    ?>
    Hab ich was falsch gemacht, oder wo könnte der Fehler stecken?

    Cu
    André
    C und C++

  7. #7
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi@all

    Hat denn keiner eine Idee? Ich will ja niemanden drengen oder meine Arbeit machen lassen. Ich brauche hierbei halt Hilfe.

    Cu
    André
    C und C++

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Hi,

    der fehler liegt hier:
    Code:
    $server = "http://serve1.dyndns.org";
    Die Funktion kann nicht mit URLs umgehen, richtig wäre:
    Code:
    $server = "serve1.dyndns.org";

  9. #9
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi@all

    Ahja, jetzt klappt es. In der Funktion ist ja auch schon der Port angegeben. Ich glaub, ich brauch eine Brille

    Cu
    André
    C und C++

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •