bilderzeugung - memory_limit 3gb

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bilderzeugung - memory_limit 3gb

    hallo,

    ich versuche im moment ein sehr großes bild (~32 megapixel) zu erstellen, in das ich dann viele kleine reinkopieren möchte.
    das ganze soll natürlich nicht in einer produktivumgebung laufen, ich möchte einfach nur das große bild mit hilfe von informationen aus einer db erstellen und dann mit seadragon nutzen.

    das problem:
    Fatal error: Out of memory (allocated 1848901632) (tried to allocate 75200 bytes) in ...\map_image2.php on line 2
    das memory_limit in der php.ini habe ich auf 3 gb gesetzt und der fehler kommt direkt bei imagecreatetruecolor.

    hier mein (geschrumpfter) code

    PHP-Code:
    $image imagecreatetruecolor(1880018800);
    imagedestroy($image);
    echo 
    'done'
    bis zu einer größe von ca. 18000x18000 px funktioniert es gut und der taskmanager zeigt auch keinen großen ramverbrauch an (der steigt um höchstens 100 mb)

    gibt es da noch irgendwelche internen beschränkungen, die ich übersehen habe? im forum hab ich leider nur beispiele gefunden, wo das einstellen des memory limit geholfen hat und die $x*$y*5 + $y*30 regel würde würde für das beispiel auch nur ca. 1,5 gb ergeben.

    vielen dank
    minkowksi

  • #2
    Zitat von minkowski Beitrag anzeigen
    das memory_limit in der php.ini habe ich auf 3 gb gesetzt
    Hm, kann PHP mit so viel umgehen, und gewährt ihm auch das OS so viel?

    Ich würd's erst mal mit -1 versuchen, und dann schauen, wie weit du kommst.

    die $x*$y*5 + $y*30 regel würde würde für das beispiel auch nur ca. 1,5 gb ergeben.
    Na das passt ja in etwa zu der angegebenen Größe, bei der abgebrochen wurde.


    OffTopic:
    Dieser Threadtitel ist einer von denen, bei denen der ich Kombination aus zwei Wörtern mit Bindestrich in er Mitte irgendwie den Vorzug vor der Zusammenschreibweise geben würde ... ich weiss auch nicht ganz, wieso.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      danke für die antwort.

      ich hab noch ein bisschen am memory_limit wert gedreht, aber auch 6G und -1 (bzw. -1M) bringt nix. er bricht immer ungefähr an der gleich stelle ab. wobei das interessanterweise nur ungefähr die gleich ist. es ist immer ein bisschen anders.

      ob php soviel verwalten kann weiß ich nicht, da hab ich auch nix zu gefunden. es verweisen immer nur alle auf das memory_limit. und ob windows ihm soviel gibt kann ich nicht sagen, sollte es doch aber, wenn ein programm das anfordert (in meinem rechner sind zur zeit 6gb installiert - von der seite her sollte es auch kein problem sein).

      Kommentar


      • #4
        Zitat von minkowski Beitrag anzeigen
        ... und ob windows ihm soviel gibt kann ich nicht sagen, ...
        32-Bit oder 64-Bit-Version?

        Kenn mich da nicht genau aus, aber bei 32-Bit-Windows könnte ggf. schon mit Problemen zu rechnen sein.
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          das ist ein guter einwand. ich hab zwar ein 64-bit windows, aber vermutlich ist php 32 bit.
          etwas mehr als 1 gb ist von system schon besetzt und vllt. "füllt" php den speicher dann nur bis zu 3gb auf.
          da werd ich gleich mal versuchen ein 64 bit server-system aufzusetzen.
          da es xampp ja nicht als 64 bit für windows gibt, gibts da ne alternative? sonst halt alles per hand...

          Kommentar


          • #6
            Ich habe das bei mir mal getestet:
            Code:
            php -d memory_limit=3G -r "imagecreatetruecolor(18800, 18800);"
            Das Skript läuft so durch. Sehr schick ist auch der Performancegraph vom Prozes************plorer dazu:
            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: perf-php-bigimage.png
Ansichten: 1
Größe: 4,0 KB
ID: 1028110
            Mein System ist ein Windows Vista Business SP2, 3 GB RAM, 32 Bit.

            Ich behaupte einfach mal, du setzt dein memory_limit nicht richtig...

            Kommentar


            • #7
              das find ich jetzt mal verblüffend.
              wenn ich die datei per
              php -d memory_limit=3G -f map_image2.php
              in der konsole ausführe, läuft es auch durch.

              aber ich versteh nicht ganz, was ich mit der zeile
              memory_limit=3G
              in der php.ini falsch mache. muss ich da noch was beachten?

              PS: über die 20.000 px x 20.000 px komm ich damit aber auch nicht, selbst mit 6G. werd mich wohl doch mal an der x64 version probieren

              Kommentar

              Lädt...
              X