Resulta que en un sistema de manejo de contenidos que realicé para X portal, se requería que el usuario pudiera subir una imagen y en base a esta deberían crearse 3 imágenes adicionales, una para miniatura, una de tamaño medio y una grande.
Para esto hice este código PHP que funciono bien por un tiempo:
Código PHP:
if( is_uploaded_file($_FILES['afiche']['tmp_name']) ) {
// Comienza la generación de la nueva imágen
$rand = rand(1,100000);
$extension = pathinfo($_FILES['afiche']['name']);
$extension = $extension[extension];
$mimes = explode(",", $extension);
$nombre = "{$rand}.$extension";
$afiche = $nombre;
// Creando Miniatura ***
// Obtener Archivo
$src = imagecreatefromjpeg($_FILES['afiche']['tmp_name']);
// Obtener Resolución
list($width,$height) = getimagesize($_FILES['afiche']['tmp_name']);
// Nueva Resolución a a aplicar
$newwidth = 150;
$newheight = ($height/$width)*150;
// Crear nueva imágen
$tmp = imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "{$uploaddir}/thumb/{$nombre}";
imagejpeg($tmp,$filename,100);
// Destruir imágenes creadas
imagedestroy($src);
imagedestroy($tmp);
// Ajustando imágen mediana ***
// Obtener Archivo
$src = imagecreatefromjpeg($_FILES['afiche']['tmp_name']);
// Obtener Resolución
list($width,$height) = getimagesize($_FILES['afiche']['tmp_name']);
// Nueva Resolución a a aplicar
$newwidth = 400;
$newheight = ($height/$width)*400;
// Crear nueva imágen
$tmp = imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "{$uploaddir}/med/{$nombre}";
imagejpeg($tmp,$filename,100);
// Destruir imágenes creadas
imagedestroy($src);
imagedestroy($tmp);
// Ajustando imágen grande ***
// Obtener Archivo
$src = imagecreatefromjpeg($_FILES['afiche']['tmp_name']);
// Obtener Resolución
list($width,$height) = getimagesize($_FILES['afiche']['tmp_name']);
// Nueva Resolución a a aplicar
$newwidth = 700;
$newheight = ($height/$width)*700;
// Crear nueva imágen
$tmp = imagecreatetruecolor($newwidth,$newheight); /**<<**/
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "{$uploaddir}/full/{$nombre}";
imagejpeg($tmp,$filename,100);
// Destruir imágenes creadas
imagedestroy($src);
imagedestroy($tmp);
}
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 2800 bytes) in /home/XXX/public_html/cms/eventos_mod.php on line 150
Marqué la línea 150 en el código anterior con "/**<<**/".
Quisiera saber que me sugieren para mejorar el rendimiento de este script o cómo puedo evitar este error. Realmente no tengo ni la más mínima idea de porque pasa esto, ya que de forma local funciona bien, y este error comenzó a aparecer recientemente.
Gracias de antemano y un saludo.