Ankündigung

Einklappen
Keine Ankündigung bisher.

Permanente Socket verbindung.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Permanente Socket verbindung.

    Hi @ All.

    Ich teste gerade auf dem local ein wenig mit php & sockets herum.
    Habe jetzt mit 'nen Kumpel zusammen einen JAVA-Srv geschrieben der den Port 7878 belegt.

    Der Java-Srv sendet beim login eine welcome message.
    Nun soll das php Script aber auf neue Daten warten....

    Machen das momentan mit:
    Code:
    $fp = fsockopen ("localhost", 7878, $errno, $errstr);
    
    if (!$fp) {
       echo "$errstr ($errno)
    \n";
    } else {
       while (!feof($fp)) {
           $out = fgets($fp,128);
           echo $out."
    ";
           flush();
       }
       fclose($fp);
    }
    Da bekommen wir eine Fehlermeldung: Fatal error: Maximum execution time of 30 seconds exceeded in

    Gibt es eine möglichkeit den Port 7878 permanent auszulesen?

  • #2
    http://de2.php.net/manual/de/functio...et-timeout.php

    Das dürfte dir normalerweise helfen



    Steffen

    Kommentar


    • #3
      Zitat von NoiZ
      http://de2.php.net/manual/de/function.socket-set-timeout.php

      Das dürfte dir normalerweise helfen
      Hi, wie kommste denn auf die Idee? Das ist kein Problem des Sockets, sondern eine PHP-Beschränkung. Damit kannst Du lediglich sagen, dass der Client nach einer bestimmten Zeit von sich aus die Verbindung schließen soll. Das ist hier ja gerade nicht erwünscht. Allerdings wird der Client von PHP gezwungen, die Verbindung zu schließen, da das ganze Programm beendet wird. Hier hilft wohl nur, die max. erlaubte Ausführungszeit auf 0 zu setzen.
      Cheers, Marco

      Kommentar


      • #4
        Das liegt am blockenden Socket setzt den Socket auf non-blocking und lese in einer Schleife byteweise vom Socket dann hast du das Problem nicht

        [edit] nicht zu vergessen die execution time temporär auf 0 zu setzen für ewiges ausführen
        Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

        Kommentar


        • #5
          Zitat von HStev Beitrag anzeigen
          Das liegt am blockenden Socket setzt den Socket auf non-blocking und lese in einer Schleife byteweise vom Socket dann hast du das Problem nicht

          [edit] nicht zu vergessen die execution time temporär auf 0 zu setzen für ewiges ausführen

          Hallo,

          ich versuche auch einen Port permanent auszulesen, da dort UDP´s ankommen.

          Wie setze ich den Port auf non-blocking?

          Danke und Gruß,

          horphi

          Kommentar


          • #6
            Ich glaube, damit funktioniert es....

            PHP-Code:
            stream_set_blocking $sock false );
            set_time_limit ); 
            Bzw. läuft mein Skript seit 1 Minute ohne Abbruch.

            Kommentar


            • #7
              Bitte grab doch keine Leichen aus dem Forum aus, der letzte Beitrag in diesem Thema vor deinen Antworten stammen aus dem Jahr 2005!

              Kommentar


              • #8
                Zitat von CPCoder Beitrag anzeigen
                Bitte grab doch keine Leichen aus dem Forum aus, der letzte Beitrag in diesem Thema vor deinen Antworten stammen aus dem Jahr 2005!
                Also soll ich lieber nen neuen Post aufmachen? Ich dachte, es ist besser Themen in einem Post zusammenzuhalten, als in viele zu verstreuen. Kein Problem

                Kommentar

                Lädt...
                X