maximaler Speicher pro Skript?
basti_p
- php
Hallo,
kurze Frage zum Verständnis: steht der in der php.ini festgelegte Speicher (memory_limit) jedem Skript separat zur Verfügung?
Szenario: ich habe in einer php-Seite einen iFrame, in welchen ein Formular mit Datei-Upload versendet wird. Steht diesem Upload-Skript jetzt der volle memory-Wert zur Verfügung oder belegt die Elternseite ggf. einen Teil des Speichers?
Danke und Grüße Basti
hi,
kurze Frage zum Verständnis: steht der in der php.ini festgelegte Speicher (memory_limit) jedem Skript separat zur Verfügung?
Ja - maximal.
Wenn der Server aber "nix mehr frei" hat, dann ggf. weniger.
Szenario: ich habe in einer php-Seite einen iFrame, in welchen ein Formular mit Datei-Upload versendet wird. Steht diesem Upload-Skript jetzt der volle memory-Wert zur Verfügung oder belegt die Elternseite ggf. einen Teil des Speichers?
Mach dir mal klar, wann PHP abläuft - wenn dein Dokument auf dem Client angekommen ist, ist PHP fertig. Wieso sollte es da noch Speicher belegen?
gruß,
wahsaga
Hallo,
Mach dir mal klar, wann PHP abläuft - wenn dein Dokument auf dem Client angekommen ist, ist PHP fertig. Wieso sollte es da noch Speicher belegen?
Das ist mir eigentlich klar; das Problem ist, dass ich ein hochgeladenes Bild verkleinern möchte. Das in der php.ini festgelegte memory_limit ist 40MB. Das JPG ist z.B. 3600 x 2400 Pixel groß. Bei "imagecreatefromjpeg..." kommt dann die Fehlermeldung, das zuviel Speicher angefordert wurde. Das Bild dürfte doch aber nur um die 3600x2400x3=25.920 KB im Speicher belegen, oder?
Grüße Basti
hi,
das Problem ist, dass ich ein hochgeladenes Bild verkleinern möchte. Das in der php.ini festgelegte memory_limit ist 40MB. Das JPG ist z.B. 3600 x 2400 Pixel groß. Bei "imagecreatefromjpeg..." kommt dann die Fehlermeldung, das zuviel Speicher angefordert wurde. Das Bild dürfte doch aber nur um die 3600x2400x3=25.920 KB im Speicher belegen, oder?
Das kommt darauf an, was du mit dem Bild machst. Beim Verkleinern hast du ja mindestens zwei Bildobjekte gleichzeitig im Speicher, und aufwendig gerechnet werden muss dabei auch noch.
gruß,
wahsaga
Hello,
da stört aber i.d.R. nicht die Einstellung für memory_limit, sondern post_max_size, upload_max_filesize, max_input_time
und eventuell für die Verarbeitung dann max_execution_time
http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
siehe auch:
http://www.php.net/manual/en/ini.php#ini.list
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo,
nee nee, der Upload läuft, das Bild wird auch ordnungsgemäß an seinen Platz kopiert - erst beim "imagecreatefromjpg" kommt der Fehler - und der sagt mir dann auch, dass das der maximal vorgegebene Speicher überschritten wurde:-(
Grüße Basti
Hello,
Hallo,
nee nee, der Upload läuft, das Bild wird auch ordnungsgemäß an seinen Platz kopiert - erst beim "imagecreatefromjpg" kommt der Fehler - und der sagt mir dann auch, dass das der maximal vorgegebene Speicher überschritten wurde:-(
Wie groß ist denn das Bild als JPG-Datei in Byte, welche Auflösung hat es?
Ein Bild von 600*800px² benötigt schließlich schon knapp 1,5Mbyte, um es bearbeiten zu können. Je nachdem, was Du dann damit machst, benötigst Du das Ganze zweimal zuzüglich Programminstanzen.
Aber vielleicht darfst Du selber an der Speichergrenze für Dein Script schrauben:
http://www.php.net/manual/en/ini.core.php#ini.memory-limit
es ist mit PHP_INI_ALL gekennzeichnet. Wenn der Admin es also nicht als PHP_Admin_Value gesetzt hat, sondern nur als PHP_Value, kannst Du es innerhalb des Scriptes oder vielleicht auch in einer .htaccess-Datei selber hochsetzen. Ich würde aber ein konkretes Limit setzen und auch nur für das eine Script, falls doch mal ein Fehler auftritt.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo,
Aber vielleicht darfst Du selber an der Speichergrenze für Dein Script schrauben:
http://www.php.net/manual/en/ini.core.php#ini.memory-limit
Danke, das hat funktioniert!
Grüße Basti