Out of memory obwohl genug speicher frei?
MRonline
- php
0 Klawischnigg0 MRonline0 Klawischnigg0 MRonline
Hallo zusammen,
ich bin mittlerweile echt ratlos.
Ich möchte beim upload von Bildern automatisch ein kleines previewbild zu erstellen.
bei Bildern um die 300kb ist das kein Problem, aber bei Bildern um die 3mb streikt es.
folgender code:
$image = imagecreatefromjpeg($file);
imagecopyresampled($tmp_pic, $image, 0, 0, 1, 1, $dest_width, $dest_height, $fileAttr[0]-2, $fileAttr[1]-2);
imagejpeg($tmp_pic, $dest_folder.$dest_name, 100);
bei zeile 1 gibts den fehler: Fatal error: Out of memory (allocated 33030144) (tried to allocate 13056 bytes) in ...
um die Speicherauslastung auszugeben hab ich 3 Funktionen getestet (natürlich vor der imagecreatefromjpeg() ;)
memory_get_usage(); -> 78804
memory_get_peak_usage(); -> 97728
ini_get("memory_limit"); -> 40M
das bedeutet doch, dass 40mb an Speicher zur Verfügung stehen oder?
kann mir bitte jemand erklären warum es nicht geht und was ich tun muss, damit es geht?
vielen Dank !!!
Hi there,
das bedeutet doch, dass 40mb an Speicher zur Verfügung stehen oder?
Wenn er auch physisch vorhanden ist, ja. Aber -
kann mir bitte jemand erklären warum es nicht geht und was ich tun muss, damit es geht?
okay danke ... das ist schlecht^^
aber was kann ich denn machen, damit das ganze trotzdem funktioniert?
Hi there,
aber was kann ich denn machen, damit das ganze trotzdem funktioniert?
Memsize-Limit 'raufsetzen oder, wenn vorhanden, mit ImageMagick probieren. Ich hab ein ähnliches Problem damit gelöst, in dem ich ImageMagick ohne Wrapper aufgerufen habe, dadurch konnte ich das memsize-Limit von PHP umgehen...
ich hab jetzt nochmal 2sachen getestet:
1.auf meinen local installierten Server durchlaufen lassen:
resultat: es funktioniert und gibt (nach 10bildern)folgende werte aus:
memory_get_usage: 21922520
memory_get_peak_usage: 40292896
ini_get("memory_limit"): 128M
2. schrittweise memory_limit auf dem webserver erhöhen:
resultat: es bricht trotz folgender Einstellungen beim erstellen des ersten Bildes ab:
memory_get_usage: 80008
memory_get_peak_usage: 98068
ini_get("memory_limit"): 2048M
(ich hab es auch mit 16000M und -1 als Einstellung versucht)
gibt es noch eine andere memory begrenzung, die hinaufgesetzt werden kann?
es kann doch nicht sein, dass es local geht und auf einem "ordentlichen" Server nicht, noch nicht mal ein Bild!?
danke ;) MR
Hi there,
es kann doch nicht sein, dass es local geht und auf einem "ordentlichen" Server nicht, noch nicht mal ein Bild!?
Doch, letztlich kann alles, was Du an Speicher anforderst, von den Servereinstellungen "overruled" werden. (Macht ja auch Sinn, was glaubst Du, was passiert mit anderen Prozessen, wenn Du aus Jux und Tollerei, sagen wir, 128 GB Speicher anforderst und der Server gibt Dir, und nur Dir, tatsächlich, was er so hat;)