phpbar.de logo

Mailinglisten-Archive

[php] memory_limit

[php] memory_limit

Ringo Großer swek at gmx.net
Die Dez 9 09:14:47 CET 2003


hallo Lutz,

Lutz Zetzsche wrote:
> Stuerzt wirklich der Apache ab oder bleibt nur der Browser haengen,

yap, tut er. zumindest interpretiere ich die fehlermeldung von windows so.

> weil Deine Ausgabe-Datei im Browser zu gross wird? Und hast Du

kann die denn zu groß werden?
nein soviel geb ich nun auch nicht aus. pro zeile ein paar zeichen und
insgesamt hab ich auch schon längere seiten gesehn.

> geprueft, dass der Effekt nicht mit dem Ueberschreiten der maximalen
> Laufzeit Deines Skripts zusammenhaengt?

tut es nicht. diese fehlermeldungen hatte ich vorher mal. da konnte ich
dann gezielt den fehler beheben. max_execution_time steht nun
wesentlich höher, außerdem enthält der loop ein usleep, was wiederum
nur beim provider unter *nix funktioniert. aber selbst ein sleep(1) unter
meinem windows konnte den fehler zwar zeitlich aber nicht im ablauf
verhindern. daher mein schluss: memory.

> Wenn tatsaechlich der Apache
> abstuerzt: Liest Du die HTML-Datei auf einen Schlag mit der Funktion
> file () ein?

auf einen schlag nicht, sondern in abständen von 255 bytes mit fgets.
aber ich halte dann das komplette document erst als string und dann
als array im speicher.
wie schon erwähnt, handelt es sich bei den größeren files um ca 125k.

> Geloest habe ich das Problem durch das _zeilenweise_ Auslesen der
> Datei. Ich habe also anstatt file() die Funktion fgets() verwendet:

siehe oben. das scheint es nicht zu sein.

>> 1. gibt es im bereich arrays irgendwelche beschränkungen
>> was tiefe oder gesamtinhalt angeht?
> Sicherlich. :-) Wenn nicht durch PHP selbst, dann durch die
> Systemresourcen. ;-) Im PHP-Handbuch habe ich aber leider keinen
> Hinweise dazu gefunden.

ich auch nicht, deswegen frag ich ja euch :)

>> 3. da ich nach einigen tests mit großer warscheinlichkeit
>> davon ausgehe, dass es sich um ein speicherproblem
>> handelt - wieso bringt php keine fehlermeldung, sondern
>> lässt stattdessen den apache abstürzen?

> Die Frage ist, ob Du mit einem hoeheren memory_limit Dein Problem
> nicht noch verschlimmerst. ;-) Versuch es doch erst einmal mit dem
> Heraufsetzen der maximalen Laufzeit Deines Skripts. Lies mal hierzu
> folgende Seite:

es ist nicht das time-limit, siehe obige beweise.
und mit höherem memory_limit (siehe mein provider) klappts ja etwas
besser. nur scheinen die 20M noch nicht ganz zu reichen.

>> ich hab das ganze zu testzwecken auch mal beim provider
>> laufen lassen. die maschine dort scheint etwas toleranter
>> zu sein, schafft es aber letztendlich auch nicht. ob der apache
>> dort auch abstürzt kann ich nicht beurteilen,
> Das war nicht nett von Dir, wenn Du dabei damit gerechnet hast, dass
> der Online-Server dadurch u.U. abstuerzen koennte. Vor allem ist das
> nicht nett, wenn da noch andere Kunden mit drauf laufen. ;-)

das war heut mitten in der nacht bei einem deutschen provider.
hab auch gleich noch mit meiner eigenen seite getestet, ob der server
nachher noch reagiert. na mal schaun, ob sich der support noch meldet *g*

>> der effekt im
>> browser ist jedoch der gleiche:
>> die seite tut eine weile lang und wenn dann eine seite kommt,
>> die scheinbar zu groß ist, um damit irgendetwas auslöst,
>> dann versucht sie sich selbst neu zu laden um dann
>> festzuhängen.
> S.o. Aber wieso versucht sich die Seite eigentlich selbst neuzuladen?
> Hast Du da etwas irgendwo einen Reload per HTML, Javascript o.ae.
> eingebaut, der Probleme bereitet? Eine Seite laedt sich doch nicht
> einfach neu... ;-) Vielleicht liegt Dein eigentliches Problem ja hier?

nö, nix. keine header nur reiner datenoutput per echo.
lokal hab ich ja den selben effekt. im den meisten fällen (aber nicht immer)
bekomm ich die fehlermeldung über den apache-absturz auch doppelt
und muss dann 2mal auf OK klicken um den dialog zu schließen. danach
zeigt der browser nur noch einen 404.
ich würds also auf dem browser schieben, der es nach dem fehlschlagen
warscheinlich gleich nochmal probiert.

also vielen dank erstmal für deine gedanken dazu.
wenn du noch weitere ideen hast, bin noch schwer interessiert das problem
zu lösen.

regards, Ringo



php::bar PHP Wiki   -   Listenarchive