fgets dazu überreden "\n" zu überlesen !!! PLZ HELP !!!

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

  • fgets dazu überreden "\n" zu überlesen !!! PLZ HELP !!!

    hy...

    habe Folgenes Problem wenn ich diese Script ausführe, dann stoppt es erst nach der "Scriptlaufzeit"...

    PHP-Code:
    <?php
    echo '<html><head><title>Quake 3 Arena Server Status Script by Jointy</title>
          <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
          <META HTTP-EQUIV="Expires" CONTENT="-1"></head><body>'
    ;


     
    $server="62.26.123.23";  // Quake Server IP oder DNS ohne "/" am Ende !!!
     
    $port="27970";            // Server Port

     
    set_time_limit(15);
     
    $fp fsockopen ("udp://".$server.""$port$errno$errstr30);
     if (!
    $fp){
         echo 
    'Sry, URL nicht erreichtbar';
     }else{
         
    $q3serverstatus="\xFF\xFF\xFF\xFFgetstatus";
         
    fputs($fp,"$q3serverstatus\n");
         
         while(!
    feof($fp)){
             
    $buffer=fgets($fp);

             echo 
    $buffer;

         }

         unset(
    $buffer);
         
    fclose($fp);
     }


    echo 
    '</body></html>';
    ?>
    da aber hier nie das "feof" erreicht wird...läuft das Stript so zusagen in eine Endlosschleife !!!

    wenn ich jetzt statt:
    PHP-Code:
    while(!feof($fp)){
            
    $buffer=fgets($fp4096);
            echo 
    $buffer;
    }

    // Versuch mit einmal alles zulesen....was laut Tutorial auch gehen soll !!!
    $buffer=fgets($fp65000); 
    das ganze nur einmal durch laufen lasse und gleich mit einmal versuche die komplette Zeichenkette zulesen...bricht der Hund immer nach 19 Zeichen (ÿÿÿÿstatusResponse ) ab weil dort ein "\n" kommt....was fgets dazu bewegt aufzuhören....

    wie bekomme ich ihn dazu das "\n" zu übersehen und weiter zu lesen bis zu mein angegebenes Byteende....

    Ergebniss mit "while" Schleife
    Code:
    ÿÿÿÿstatusResponse 
    \version\Q3 1.32 linux-i386 Oct 7 2002\dmflags\0\fraglimit\0\timelimit\0\g_gametype\8\protocol\68\mapname\ra3map12\sv_privateClients\2\sv_hostname\^2E^7vil ^2K^7illers Tanzschule\sv_maxclients\22\sv_punkbuster\0\sv_maxRate\20000\sv_minPing\0\sv_maxPing\0\sv_floodProtect\0\sv_allowDownload\0\.visit\[url]www.Evil-Killers.com\.admin\aiCi[/url] & perplexa\.irc\#Evil-Killers @ QuakeNet\.location\Koeln\.mode\public\.web\[url]www.Evil-Killers.com\.email\aiCi@Evil-Killers.com\capturelimit\0\gamename\arena\g_maxGameClients\0\g_needpass\0[/url] 
    9 57 "^5*^4Maxi^5^4mus^5*" 
    2 66 "^4H^2I^4G^2H^4T^2O^4P^1>N^4.^1A" 
    13 46 "^3PenGuin" 
    5 64 "|zweRgi|" 
    2 81 "honkitonki" 
    8 74 "^3GenPuin" 
    7 20 "^3S^7o^3H^7l^3!" 
    44 34 "^2m^7atee^2>>^7vector^2!" 
    0 63 "{^1s^7Y^1R^7i^1O^7}" 
    11 93 "^1|||||||||||^7C*^1||||||||||||" 
    4 69 "Fo^1x" 
    0 70 "zy" 
    23 35 "Sh^2e^7d" 
    0 33 "^6rass^5!" 
    45 66 "^7[WOTKA]^1d^2e^5c^3o^4y" 
    15 54 "^6gen^3!" 
    3 77 "^7Os^1V^7et" 
    1 31 "UnnamedPlayer" 
    0 71 "Much_higher_than_you" 
    
    Fatal error: Maximum execution time of 15 seconds exceeded in d:\wwwroot\uebungen\mp3\q3a_svr_check.php on line 26
    Ergebniss ohne Schleife
    Code:
    ÿÿÿÿstatusResponse
    cya Jointy

  • #2
    mit fread()

    fgets() liesst zeilenweise. ein \n ist ein umbruch und daher ein zeilenende.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Original geschrieben von Abraxax
      mit fread()

      fgets() liesst zeilenweise. ein \n ist ein umbruch und daher ein zeilenende.
      hy...

      das funzt mit fread() überhaupt nicht...egal wie weit ich ihn lesen lassen immer bricht ein nach der "Scriptlaufzeit" ab !!!

      und gibt nicht zurück !!!

      weil auch wieder fread() versucht ein "feof" zufinden....das gibt es hier aber nicht !!!

      cya Jointy
      Zuletzt geändert von Jointy; 05.03.2003, 15:25.

      Kommentar


      • #4
        man muss es ja auch nicht in einer schleife laufen lassen...

        man kann auch eine länge angeben, wieviel er laden soll.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          hy...

          habs hin bekommen...

          PHP-Code:
          <?php
          echo '<html><head><title>Quake 3 Arena Server Status Script by Jointy</title>
                <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
                <META HTTP-EQUIV="Expires" CONTENT="-1"></head><body>'
          ;


           
          $server="62.26.123.23";  // Quake Server IP oder DNS ohne "/" am Ende !!!
           
          $port="27970";            // Server Port

           
          set_time_limit(15);
           
          $fp fsockopen ("udp://".$server.""$port$errno$errstr30);
           if (!
          $fp){
               echo 
          'Sry, URL nicht erreichtbar';
           }else{
               
          $q3serverstatus="\xFF\xFF\xFF\xFFgetstatus";
               
          fputs($fp,"$q3serverstatus\n");



               
          $buffer=fgets($fp);
               echo 
          $buffer;
               
          $buffer=fgets($fp);
               echo 
          $buffer;

               
          // $array=explode("/",$result);
               // print_r($array);

               
          unset($buffer);
               
          fclose($fp);
           }


          echo 
          '</body></html>';
          ?>

          Kommentar


          • #6
            Original geschrieben von Jointy
            habs hin bekommen...
            sicher?

            Warning: Wrong parameter count for fgets() in ********* on line 20
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              hy...wenn bei dir net läuft bei mir schon....

              und das genau so wie ich es wollte....

              dein Fehler wird sein, das "BackSlashes " fehlen weil das Board welche verschluckt hab ich gesehn....

              wenn du willst schicke ich dir das File mal per Mail....


              PHP-Code:
              <?php
              echo '<html><head><title>Quake 3 Arena Server Status Script by Jointy</title>
                    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
                    <META HTTP-EQUIV="Expires" CONTENT="-1"></head><body>'
              ;


               
              $server="62.26.123.23";  // Quake Server IP oder DNS ohne "/" am Ende !!!
               
              $port="27970";            // Server Port

               
              set_time_limit(15);
               
              $fp fsockopen ("udp://".$server.""$port$errno$errstr30);
               if (!
              $fp){
                   echo 
              'Sry, URL nicht erreichtbar';
               }else{
                   
              $q3serverstatus="\xFF\xFF\xFF\xFFgetstatus";
                   
              fputs($fp,"$q3serverstatus\n");


                   
              // liest bis zum ersten "\n" und lässt den Dateizeiger stehen
                   
              $buffer=fgets($fp);
                   echo 
              $buffer;
                   
                   
              //liest ab Dateizeiger weiter bis zum nächsten "\n" und lässt Dateizeiger dort stehen...
                   
              $buffer=fgets($fp);

                   
              $array=explode('\\',$buffer);
                   
              print_r($array);


                   unset(
              $array);
                   unset(
              $buffer);
                   
              fclose($fp);
               }


              echo 
              '</body></html>';
              ?>
              cya
              Zuletzt geändert von Jointy; 05.03.2003, 16:06.

              Kommentar


              • #8
                ich habe mir das grad aus deinem post geklaut... ich kann ja nochmal rein und ändern, und da stehen die \ drin ....

                es geht aber dennoch nicht. selbe meldung. du hast bestimmt noch nachbessern müssen. ist aber egal. solange es bei dir läuft....
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  hy...

                  der Fehler liegt bei dem Command was du den QuakeServer sendest...

                  $q3serverstatus="\xFF\xFF\xFF\xFFgetstatus";
                  fputs($fp,"$q3serverstatus\n");

                  und

                  $array=explode("\\", $buffer);


                  so mehr BackSlashes hab ich nicht gefunden...

                  cya

                  Kommentar


                  • #10
                    ich habe zwar dein $array=explode("\\", $buffer); nicht im code gefunden, aber das andere habe ich korrekt übernommen.

                    ist aber egal. ich hatte das nur mal zum spass testen wollen ...
                    vielleicht liegst auch an meinem server ... laut doku braucht man den
                    zweiten parameter nämlich in der tat nicht zwingend. naja. egal...
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar

                    Lädt...
                    X