Tom: Antwort auf Post-Request unvollständig

Beitrag lesen

Hello,

Das mit den 100k ist Dein Fehler.

Wo ist da ein Fehler? Die Datei ist 42.000 Zeichen lang, ich will bis max. 100.000 auslesen bzw bis EOF...

Formal ist es richtig, aber an dieser Stelle funktioniert es nicht.
Dedlfix hat Dir die Stelle ja auch zitiert, an der es steht und die beschreibt, warum es nicht funktioniert. fread() hört eben auf zu lesen, wenn das Paket zuende gelesen ist.

Aber nimm eine Schleife:
[...]
Das klappt eigentlich immer.

Hat auch geklappt. Danke.

Na, sag ich doch.
Man müsste eigentlich in der Schleife auch den Rückgabewert von fread() auf !== false (nicht identisch false) prüfen. Wenn nämlich ein Socketfehler auftritt, kann fread() nicht mehr lesen, aber feof() ist nicht erreicht.

$ok   = true;
$page = '';

while (!feof($fh) and $ok)
{
  $buf = fread($fh, 128);
  if ($buf === false)
  {
    $ok = false;
  }
  else
  {
    $page .= $buf;
  }
}

Das ist jetzt etwas umständlich geschrieben. Aber es stellt sicher, dass man nach Abbruch der Schleife noch feststellen kann, warum sie beendet wurde.

Zusammengeschrumpft müsste es so auch gehen:

while (!feof($fh))
{
  if (false === ($buf = fread($fh, 128)) break;
  $page .= $buf;
}

Harzliche Grüße aus
Sankt Andreasberg
und Guten Rutsch

Tom

--
Nur selber lernen macht schlau