Tom: Bilderstellung: Fatal error: Allowed memory size

Beitrag lesen

Hello Jan,

"Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 13274305 bytes)..."

Da gab es einen etwas längeren Thread http://forum.de.selfhtml.org/archiv/2007/12/t163004/#m1061781

Der hat dann in Folge zu dieser Funktion geführt, die gewiss noch nicht wirklich sicher ist.
$_imageinfo ist das Ergebnis der Funktion getimagesize()
Die Konstante MEMORY_LEFT sollte nicht unter 100000 liegen. Sie kennzeichnet den Speicher, der noch für weitere Operationen übrig bleiben muss.

function image_check_memory($_imageinfo, $memleft = MEMORY_LEFT)  ## X, Y, bits, channels
{
   ## fehlende Angaben durch Raten ergänzen
   if (!isset($_imageinfo['bits'])) $_imageinfo['bits'] = 8;
   if (!isset($_imageinfo['channels']) and $_imageinfo['bits'] == 24) $_imageinfo['channels'] = 1;
   if (!isset($_imageinfo['channels'])) $_imageinfo['channels'] = 3;

$memoryNeeded = round(($_imageinfo[0] * $_imageinfo[1] * $_imageinfo['bits'] * $_imageinfo['channels'] / 8 + 65536) * 1.65);
   $memoryLimit = intval(ini_get('memory_limit')) * 1048576;

if ((memory_get_usage() + $memoryNeeded) + $memleft > $memoryLimit)
   {
     error_log('IMAGE_MEMORY usage: '.memory_get_usage().", needed: $memoryNeeded, limit: $memoryLimit\n", 3, '/var/log/web04/php_error_log');
     return false;
   }

return true;
}

Die Funktion verhindert (meistens) das Überschreiten des Speicherbedarfs durch Bilderoperationen.

Die im thread mit Engin und mir genannten Links auf meinen Server sind zur Zeit leider außer Betrieb, aber vielleicht bekomme ich es an diesem Wochenende geregelt, dass sie wieder "funxen" ;-)

Liebe Grüße

Tom vom Berg

--
Nur selber lernen macht schlau