Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Script braucht zu viel Speicher

Hi Leute!

Hab ein großes Problem:
Ich hab ein php-script geschrieben, worüber man Bilder(jpg) auf den Server hochladen kann
und welches diese dann auf eine genormte Größe und Qualität bringt (damit sie nicht zu viel
Speicherplatz fressen...)
Das ganze funktioniert auch gut, nur nach ein paar Tagen Nutzung erscheint plötzlich die Fehlermeldung
"Allowed memory size of ... bytes exhausted"
Ich hab mittlerweile schon rausbekommen, dass das eine Überschreitung des erlaubten RAMs beim
Provider bedeutet und dass ich den Speicherbedarf des scriptes reduzieren muss. Das gelingt aber nicht.

memory_size ist beim Provider auf 10M eingestellt; also eigentlich mehr als genug... Ich kann mir auch
nicht vorstellen, dass mein script so viel Speicher braucht, da die jpg-Datei i.d.R. nur 500 kb groß ist
und das zwischen-Image maximal 1,5MB RAM wegnimmt. Das erklärt auch nicht, dass das Problem
erst nach ein paar Tagen auftritt. Sollte es möglich sein, dass der Speicher irgendwie nicht richtig
geleert wird, also bei jedem Aufruf "voller" wird und irgendwann überläuft?
Gibt es eine Möglichkeit, den Speicher komplett von irgendwelchen "Rückständen" des scriptes zu befreien?

Hier mein Quellcode:

Code:                   In Zwischenablage kopieren (nur IE)
1">

Danke schon im Voraus für Hilfe!

fh_tfm
Hier gehts zum Orginal Eintrag "Script braucht zu viel Speicher" im Forum

Antworten

Eigentlich sollte PHP keine Memory Leaks aufweisen, aber versprechen möchte ich da nichts. Jedoch wage ich stark anzuzweifeln, dass ein 500 kB JPEG File nur 1.5 MB in unkomprimiertem Zustand hat - JPEG komprimiert eigentlich wesentlich stärker.


2.

Hallo Oliver, danke für deine Antwort

Na gut, ich habs noch mal durchgerechnet:

Die Variable $image wird bei meinen 1280x960 jpegs ungefähr 3,5MB (3686400 Bytes)
groß (bei 24 Bit Farbtiefe) und di Variable $to bei max 540x540 und 32 Bit Farbtiefe 1,1MB,
hinzu kommen noch das Thumnail und ein paar weitere Variablen und die Verwendung
einer PHP-Session (nicht im Codebeispiel mit dabei), also überschlagen maximal 5MB
Speichernutzung; ich habe aber 10 MB zur Verfügung.....!?

Also, für alle weiteren Antworten bin ich sehr dankbar!

mfG

fh_tfm


3.

Deine Berechnungen werden dann wohl einfach nicht ganz stimmen. So wird die GD-Bibliothek vermutlich eher 4 als 3 Byte/Pixel benutzen.


4.

Selbst bei 4 Bytes pro Pixel (32Bit Farbtiefe) liegt der Speicherbedarf deutlich unter 10 MB.
Das erklärt auch nicht, dass das Phänomen erst nach ein paar Tagen auftritt und das
script davor ja einwandfrei funktioniert hat.....
oder brauchen bestimmte Operationen wie z.B. imagecopyresized wiederum eine Menge Speicher?
Es muss doch irgendwie möglich sein für eine Verkleinerung eines jpeg-Bildes (in den gegebenen
Größenordnungen) mit 10MB Arbeitsspeicher auszukommen......

Danke trotzdem, fh_tfm


5.

Hab wieder was rausgefunden, was ich nicht verstehe.
Auf meinem eigenen LAMP-Server läuft php Version 4.1.2
und memory_limit ist auf 8MB eingestellt. Kurioserweise funktionierts
da trotzdem einwandfrei (bei weniger Speicher).
Beim Provider (Kontent) läuft php Versipn 4.3.4 mit memory_limit 10MB.
Hier wird der Speicherplatz jedoch überschritten. Kann es sein,
dass beim Provider im Hintergrund noch irgendwo anders Speicher gebraucht wird??
Gilt die Speicherbegrenzung für alle zusammen oder nur für das jeweilige script?
Gibt es eine Möglichkeit, sich die Speichernutzung mit php auflisten zu lassen?

mfG

fh_tfm


Hier gehts zum Orginal Eintrag "Script braucht zu viel Speicher" im Forum
 
phpforum.de | Impressum | Handy Bundles