phpbar.de logo

Mailinglisten-Archive

[php] Nicht der ganze String

[php] Nicht der ganze String

Ulf Wendel UW_(at)_NetUSE.DE
Mon, 21 Feb 2000 12:46:27 +0100


Clemens Staub wrote:
> 
> Hallo Pascal und Ulf,
> 
> weiss jetzt niemand Rat ? Was kann mann dagegen tun ?
> 
> -> Egon ?
> -> Tobias ?
> 
> Hilfe !!
> 
> > ich habe mal getestet, wieviel des files überhaupt mit fread() oder
> > readfile() ausgegeben werden. es hat sich nichts geändert. nach ca.
> > 600KB ist sense, obwohl ich den scriptspeicher von 8 auf 18MB
> > hochgesetzt habe.
> > Weisst du, wie lang ein string sein darf?
> > Und wieso klappt das mit readfile() nicht?
> > Das script wird anscheinend abgearbeitet, da das letzte echo noch
> > ausgeführt wird.
> > Der Browser scheint ja auch nicht seinen dienst zu verweigern, da er ja
> > das letzte echo anzeigt.

Was auch immer da passiert, ich kann das Verhalten nicht
reproduzieren. Es ist mit Sicherheit kein Bug, dafür ist der
fread() Source auch viel zu einfach und kurz.

Taste Dich doch mal an die Aufgabe heran, ohne eine Ausgabe zu
machen:

$fh = fopen($file, "r");
$content = fread($fh, filesize($fh));
fclose($fh);
printf("strlen = '%s', filesize = '%s'", strlen($content),
filesize($file) );

Sollten beide Zahlen bei unterschiedlichen Files reproduzierbar
voneinander abweichen klingt es so, als sei auf irgendeinem Grund
ein zweites EOF (oft: \0) in die untersuchten Files
hineingeraten. Wenn dem so ist, sollten auch alle anderen
Programme (z.B. Editoren) darüber stolpern. So etwas könnte
theoretisch passieren, wenn die Daten von unterschiedlichen
Systemen kommen, aber eigentlich...

Sollten die Zahlen identisch sein, macht Dir doch die Ausgabe
einen Strich durch die Rechnung. Was passiert denn bei obigem
Script?

Sollte es ein Speicherproblem sein, so müßtest Du ein identisches
Verhalten sehen, wenn Du einen sehr großen String anlegst.

$string = "a";
for ($i=0; $i<24; $i++)
  $string.=$string;
sleep(5);

Beobachte mal was hierbei passiert. $string wird 2^24 ~ 16
Millionen Zeichen lang. Das frißt reichlich Speicher, auf meiner
Maschine sind es 43MB. Steigt PHP aus?

Ulf

-- 
Ulf Wendel
NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany
Fon: +49 431 386435 00  --  Fax: +49 431 386435 99


php::bar PHP Wiki   -   Listenarchive