Memory überschritten -> Warum?

Tja das ist ein riesen Problem. :D

Denn ich denke die Eingestellten 64MB vom Hoster sind schon in Ordnung. Das Projekt soll ja langfristig laufen und wenn ich den Memory-Limit selber auf z.B. 256 MB erhöhe und meine User am Tag hunderte der sogar tausende Grafiken erstellen, bekomme ich irgendwann Probleme mit meinem Hoster.

Ein eigener Server oder V-Server lohnt sich einfach nicht da ich keinerlei Gewinn mit diesem Projekt erziele. Ausserdem fehlen mir dazu wichtige Administrative kenntnisse die das A und O sind.

Bleiben wohl nur zwei Möglichkeiten. Entweder ich reduziere die Größe der Grafiken oder ich steige doch auf SVG um.

Denn bei meinem Projekt dreht sich alls um Grafiken. Die ganzen Berechnungen verbrauchen "kaum" Speicher und sind überhaupt kein Problem aber das hundertfache laden von großen Grafikn ist einach zuviel des guten.

SVG ist zwar auch eine ganz tolle Sache und ich habe alle meine Grafiken in SVG erstellt aber beim zusammen puzzeln der einelnen Grafiken zu einer großen Grafik stoße ich seit Monaten an meine Grenzen.

Ich behaupt das die best beschriebenen Webseiten auf Englisch sind und Englisch ist bei mir so ein Problem für sich.

Vom Gedanken her, eine ganz einfache Sache aber beim umsetzen schlicht unmöglich.

1. SVG Dokument erstellen
2. Hauptgrafik (SVG) in neues SVG-Dokument laden
3. Die einzelnen Grafiken (SVG) in das neue SVG-Dokument laden
4. Das SVG-Dokument als SVG-Datei auf dem Server speichern
5. Mit ImageMagick die SVG-Datei in PNG konvertieren

Der User würde nie eine SVG-Grafik oder SVG-Datei zu Gesicht bekommen, der Speicher würde DEUTLICH geschont werden und ich müsste nicht auf Qualität verzichten. Eigentlich perfekt, wenn da nicht "meine besonderen Probleme" wären.

Was mich an SVG besonders reizt ist die Möglichkeit mit cm und mm arbeiten zu können. Pixel hätten keine Bedeutung mehr ausser beim konvertieren. Wichtige Berechnungen kann ich ja immer noch mit PHP machen.

Ein ganz blödes Beispiel, welches ich NICHT umsetzen kann.

Würfel.svg
In dieser SVG-Datei ist ein Würfel-Rohling drin. Also ohne Punkte.

Punkt.svg
In diser SVG-Datei ist nur ein Punkt drin.

Jetzt müsste ich ein neues SVG-Dokument erstellen, welches so Groß ist (alles in mm) wie der Würfel. Dann wird die Würfel.svg "als Objekt" eingebunden. Danach wird die Punkt.svg eingebunden und mehrmals (z.B. 6 mal) an die richtigen Positionen gesetzt.

Tja... Klingt einfach, scheint aber eine Monster Arbeit zu sein.

Dabei würde ich dann auch diese "Lückenfüller" nicht mehr brauchen.
 
Von SVG habe nicht sehr viel Ahnung, ich denke aber, du bist da auf dem richtigen Weg. Bestimmt kann dir hier der eine oder die andere bei diversen konkreten Problemen helfen. Allerdings hast du heute eine Menge über das Laufzeitverhalten von PHP gelernt ;-)
 
Rund 95 MB:
PHP:
$dblMemUsage = memory_get_usage();
$final_img = imagecreatetruecolor(10000, 2000);
$dblMemUsage = round( ( memory_get_usage() - $dblMemUsage ) / 1024, 4 );

echo "<p>Memory usage: {$dblMemUsage} KByte</p>";

Ich habe mal deinen Code etwas umgebaut und eine 10000x10000px mit Imagick erstellt in der Farbe Rot und dabei kam "Memory usage: 1.1719 KByte" raus.

Das ist doch gut oder?

Nur die Verarbeitungszeit des Skriptes war etwas lange:
Verarbeitung des Skripts: 15.1296050549 Sek.
 
Dann hast du falsch gemessen
1 komma irgendwas Kilobyte bei 100Mio. Pixel...nie im Leben.

Die Zeit ist schon eher realistisch.

Willst du uns mal zeigen, wie du Raisch´Code geändert hast?
 
Dann hast du falsch gemessen
1 komma irgendwas Kilobyte bei 100Mio. Pixel...nie im Leben.

Die Zeit ist schon eher realistisch.

Nein, das ist realistisch. Die Image-Magick-Extension gibt nach der Bearbeitung automatisch alle Resourcen frei. Daher hat man auch kein Handle auf das Bild wie bei den GD-Funktionen.

Die Zeit ist eh realistisch und lässt sich vermutlich nur doch potentere CPU+Speicher verbessern. Evtl. auch wenn man einen anderen Bild-Typ oder schlechtere Qualität verwendet.
 
Zurück