steffen: Quellcode einlesen #2

Ich verstehe nicht, wieso mein Post gelöscht wurde?

Ich muss ein kompletten Quelltext einlesen!

http://freewar.tiramon.de/index.php?username=steffen&server=1

Jetzt habe ich es so geschrieben:

$f1=fopen("http://freewar.tiramon.de/index.php?username=steffen&server=1","r");
while (!feof($f1)) {
        $buffer = fgets($f1, 4096);
        $text.=$buffer;
echo $buffer;
}
fclose($f1);

Jetzt liest er löeider nur ein Teil ein und ich verstehe einfach nicht wieso :(

Wer kann helfen?? thx

  1. Du liest mit
    $buffer = fgets($f1, 4096);
    Immer nur 4096Byte einer Datei aus. Danach bricht PHP automatisch ab, auch wenn die Datei größer ist.

    $buffer = fgets($f1, filesize($f1));

    sollte funzen..

    1. Hallo Adromir,

      Du liest mit
      $buffer = fgets($f1, 4096);
      Immer nur 4096Byte einer Datei aus. Danach bricht PHP automatisch ab, auch wenn die Datei größer ist.

      dafür ist ja das while(!feof($f1)) da (das Beispiel auf http://de2.php.net/fgets sieht genauso aus) - aber ohne zu wissen was Steffen mit "einen Teil" meint, kann ich auch nicht sagen was da schief läuft.

      $buffer = fgets($f1, filesize($f1));
      sollte funzen..

      nein, da furzt... ähh... funktioniert nichts - filesize() funktioniert für http-Zugriffe nämlich nicht.

      Grüße aus Nürnberg
      Tobias

    2. Hi!

      $buffer = fgets($f1, 4096);
      Immer nur 4096Byte einer Datei aus. Danach bricht PHP automatisch ab, auch wenn die Datei größer ist.

      Daher benutzt man die Funktion ja auch einer Schleife mit feof().

      $buffer = fgets($f1, filesize($f1));

      sollte funzen..

      Nur mit PHP5 funktioniert filesize() per fopen-wrapper, und keine Ahnung ob das funktioniert wenn keine content-length gesendet wurde.

      Ich würde es eher mal mit file_get_contents() versuchen, oder noch besser mit PEAR::HTTP_Request. Allerdings sollte die vom OP beschriebene Variante eigentlich funktionieren, siehe: http://de3.php.net/manual/de/features.remote-files.php

      In wiefern ist die Datei denn nicht komplett? Ist das 1:1 der Code der verwendet wird? Kommt nur der Anfang oder nur das Ende an? Was steht am Ende in $text?

      Grüße
      Andreas

      PS: das Posting wurde übrigens nicht gelöscht, da ist kurzzeitig irgendwas abgestürzt, sorry.

      --
      SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
  2. Hi,

    ich hab ein Program geschrieben, das mit bestimmten Teilen des Quellcodes einer anderen Seite arbeitet.

    Wenn ich jetzt aber den Quellcode einlesen will, fehlt die hälfte :-/

    Zum einlesen nutze ich das hier:

    $f1=fopen("http://freewar.tiramon.de/index.php?username=Vampire&server=1","r");
    while (!feof($f1)) {
            $buffer = fgets($f1, 4096);
            $text.=$buffer;
    echo $buffer;
    }
    fclose($f1);

    Also wenn du die Ausgabe meinst, probier mal das hier:

    $text = '';
    $f1=fopen("http://freewar.tiramon.de/index.php?username=Vampire&server=1","r");
    while (!feof($f1)) {
             $buffer = fgets($f1);
             $text .= $buffer;
    }
    echo 'text:' . $text;
    fclose($f1);

    Der Parameter length ist ab PHP 4.2.0 optional. Braucht also nicht mehr angegeben werden.

    Würde dir aber denoch empfehlen, die ganze Kommunikation über Sockets zu machen, ansonsten hast du wenn der Server ausgelastet häufige Timeout probleme.

    Mfg Jan