Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   [PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript (https://www.tweakpc.de/forum/programmiersprachen/83616-php-merkwuerdiger-unberechtigter-speicherueberlauf-php-skript.html)

sofl 27.09.2011 12:26

[PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript
 
Hallo Gemeinde.

Ich erstelle derzeitig eine Image-Klasse für ein kommendes Projekt. Mein Problem hierbei ist das ich, wenn ich größere Images lade und bearbeite, ein Fehler entsteht aus welchem ich nicht schlau werde.

Hier ein Beispielskript bei welchem dieser ebenfalls entsteht.

[php]
$im=imagecreatefromjpeg('http://www.vodafone.is/images/thjonustusvaedi/Thjonustusvaedi_Vodafone_GSMog3G_2010feb.jpg');

$im = imagerotate($im,45,0);

header('Content-type: image/jpeg');

imagejpeg($im);

imagedestroy($im);
[/php]

Das Ergebnis ist nicht wie gewünscht das um 45° gedrehte Bild, sondern folgender Fehler

[quote]Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 7189 bytes) in C:\inetpub\wwwroot\uis\test.php on line 42[/quote]

Merkwürdig hierbei finde ich das Mir gesagt wird das die erlaubte Speichermenge von 128MB, beim Versuch ~7KB zu reservieren, überschritten wurde. :confused:

Kann mir das jemand erklären oder eventuell eine Lösung/Workaround/Tipp geben ?

Danke.

sofl

poloniumium 27.09.2011 12:32

AW: [PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript
 
statt dass die datenmenge wirklich zu groß ist kann sowas auch an mangelnden schreibrechten liegen. dann ist bereits 1bit zu viel.
wär das ein ansatz?

sofl 27.09.2011 12:38

AW: [PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript
 
Hallo poloniumium! Danke erst mal für die schnelle Antwort. Berichtige mich bitte wenn ich mich Irre aber ist das überhaupt möglich das man den Speicherbedarf "administrieren" kann ? Falls ja, dann müsste mir das Skript im Fehler ja die korrekte zugelassene Menge auch ausgeben. Außerdem tritt der Fehler ja auch nur bei exorbitant großen Bildern auf (3kx3k+).

Mother-Brain 27.09.2011 13:10

AW: [PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript
 
Mehr RAM einbauen und max_memory_size in der php.ini erhöhen ;)

Sehr fieß ist auch die deklaration am Anfang:

ini_set('memory_limit', '-1');

Aber kommt halt drauf an, wie die php.ini aussieht, ob das funktioniert.

Achja, du solltest auch irgendwann deine Objekte wieder "nullen" sonst hat es nix mit dem File zu tun, sondern eher damit, dass alles "in Bereitschaft" gehalten wird... muss aber nicht unbedingt sein.

[quote]Your script is using too much memory. This can often happen in PHP if you have a loop that has run out of control and you are creating objects or adding to arrays on each pass of the loop.
Check for infinite loops.
If that isn't the problem, try and help out PHP by destroying objects that you are finished with by setting them to null. eg. $OldVar = null;
Check the code where the error actually happens as well. Would you expect that line to be allocating a massive amount of memory? If not, try and figure out what has gone wrong...

[/quote]

sofl 27.09.2011 13:59

AW: [PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript
 
Hey Mother Brain!

Mit ini_set/ini_get hab ich auch schon rumprobiert. ini_get gibt mir den korrekten Wert (128M) aus. Objekte Nullen usw. mag ganz nützlich sein. Allerdings tritt der Fehler ja auch bei dem simplen Skript (erster Post) auf.[COLOR="Silver"]

EDIT:

[/COLOR]Problem gelöst. Ich habe die Fehlermeldung mehr oder weniger falsch interpretiert. Darin steht nämlich nicht wie viel von den 128MB bereits verbraucht sind. Direkt nach dem Erstellen der Imageressource habe ich mir den derzeitigen Verbrauch mit memory_get_usage() ausgeben lassen und gesehen, dass schon über die Hälfte verbraucht war. Die ganze Transaktion funktionierte dann erst mit einem Limit von 1024MB.

ini_set('memory_limit','1024M');

Ich danke euch für die "Teilnahme" :)

sofl

Mother-Brain 27.09.2011 14:10

AW: [PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript
 
Wie gesagt nen

ini_set('memory_limit', '-1');

wäre auch des Rätsels-Lösung gewesen, weil du damit dann PHP allen RAM zur Verfügung stellst... ;)

Ich selbst finde aber man sollte mit 128M locker hinkommen... aber das ist alles Subjektiv.

sofl 27.09.2011 14:40

AW: [PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript
 
[quote=Mother-Brain;741376]Wie gesagt nen

ini_set('memory_limit', '-1');

wäre auch des Rätsels-Lösung gewesen, weil du damit dann PHP allen RAM zur Verfügung stellst... ;)

Ich selbst finde aber man sollte mit 128M locker hinkommen... aber das ist alles Subjektiv.[/quote]

Dachte du meintest ich hätte versehentlich derartiges im Kopf meines Skripts platziert. Die Einstellung ist wirklich fantastisch! Mich würde allerdings interessieren was passiert wenn der tatsächlich verfügbare Speicher überläuft. Hattest du diesen Fall schon einmal?

sofl

Tweak-IT 05.10.2011 14:52

AW: [PHP] Merkwürdiger/Unberechtigter Speicherüberlauf im PHP-Skript
 
Was passiert? Nun ja ;-)

[code]PHP Fatal error: Out of memory[/code]


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.