basti_p: maximaler Speicher pro Skript?

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

  1. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. 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

      1. 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

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. 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

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. 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

          1. 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

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau

            1. 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