Bernd: Bilderupload

Hallo,

ich bastele gerade an einem Imageupload in PHP.
Dazu werden ein oder mehrere Bilder mittels eines Formulars auf den Server geladen, dann werden die Bilder in 3 Formate verkleinert und 3 verschiedene Verzeichnisse(/preview, /big, /little) kopiert.
Danach wird das Originalbild gelöscht.

Das Problem ist, das bei einer oder mehreren Dateien die insgesamt die Dateigröße von ca. 450 kb überschreiten folgende Fehlermeldung kommt.

Fatal error: Allowed memory size of 12582912 bytes exhausted at (null):0 (tried to allocate 6400 bytes) in /pfadzudokumentroot/upload_b.php on line 255

Dort wird die Funktion ImageCreateFromJPEG angewandt.
Nun vermute ich, das nicht die Bilder zu groß sind, sondern das im Laufe der Funktionen die die Bilder verkleinern die gesamte Speichergröße die benötigt wird zu groß wird. Ist es irgendwie möglich den Speicher zwischen den Funktionen zu leeren?

Oder hat irgendjemand eine Idee woran es noch liegen könnte?

mfg

Bernd

  1. hi,

    Fatal error: Allowed memory size of 12582912 bytes exhausted at (null):0 (tried to allocate 6400 bytes) in /pfadzudokumentroot/upload_b.php on line 255

    Dort wird die Funktion ImageCreateFromJPEG angewandt.

    Nun vermute ich, das nicht die Bilder zu groß sind, sondern das im Laufe der Funktionen die die Bilder verkleinern die gesamte Speichergröße die benötigt wird zu groß wird. Ist es irgendwie möglich den Speicher zwischen den Funktionen zu leeren?

    du kannst die erzeugten bildobjekte, nach dem du sie mit ImageJPEG ins dateisystem geschrieben hast, wieder "zerstören", so dass der von ihnen im RAM belegte speicherplatz wieder freigegeben wird:

    http://www.php.net/manual/de/function.imagedestroy.php

    gruss,
    wahsaga

    1. Hallo,

      am Ende des Scripts lösche ich das temporäre Bild mit unlink().
      Wenn ein Bild erzeugt wird und gespeichert wird in einem bestimmten Verzeichnis, wird dann der Speicher danach von dem Bild immer noch belegt, obwohl das Script vielleicht schon beim erstellen des nächsten Bildes ist?

      mfg

      Bernd

      1. Problem gelöst, danke für die Hilfe.

        mfg

        Bernd

        1. hi,

          Problem gelöst, danke für die Hilfe.

          sagst du bitte auch noch kurz, _wie_ - für's archiv?
          danke!

          gruss,
          wahsaga

  2. Hallo Bernd!

    Das Problem ist, das bei einer oder mehreren Dateien die insgesamt die Dateigröße von ca. 450 kb überschreiten folgende Fehlermeldung kommt.
    Fatal error: Allowed memory size of 12582912 bytes exhausted at (null):0 (tried to allocate 6400 bytes) in /pfadzudokumentroot/upload_b.php on line 255
    Dort wird die Funktion ImageCreateFromJPEG angewandt.

    Schau doch mal mit Hilfe von http://de3.php.net/manual/en/function.memory-get-usage.php wann wieviel Speicher verbraucht wird, vielleicht siehst Du ja dann, woran es liegen könnte.

    Du kannst Dir auch mal http://de3.php.net/manual/en/function.shm-remove.php usw. anschauen, damit kann man wohl Speicher wieder freigeben.

    MfG
    Götz

    --
    Losung und Lehrtext für Freitag, 5. März 2004
    Auf ihm wird ruhen der Geist des Herrn, der Geist der Weisheit und des Verstandes, der Geist des Rates und der Stärke, der Geist der Erkenntnis und der Furcht des Herrn. (Jesaja 11,2)
    Jesus ließ sich taufen von Johannes im Jordan. Und alsbald, als er aus dem Wasser stieg, sah er, dass sich der Himmel auftat und der Geist wie eine Taube herabkam auf ihn. Und da geschah eine Stimme vom Himmel: Du bist mein lieber Sohn, an dir habe ich Wohlgefallen. (Markus 1,9-11)
    (http://www.losungen.de/heute.php3)