Estoy tratando de procesar un directorio de imágenes JPEG (aproximadamente 600+, que van desde 50k a 500k) usando PHP: GD para cambiar el tamaño y guardar las imágenes pero he golpeado un poco enganchar bastante temprano en el proceso. Después de procesar correctamente solo 3 imágenes (30K, 18K y 231K) obtengo un Tamaño de memoria permitido de 16777216 bytes agotados PHP Error grave.PHP GD Tamaño de memoria permitido agotado
estoy ciclismo a través de las imágenes y pidiendo el código de abajo:
list($w, $h) = getimagesize($src);
if ($w > $it->width) {
$newwidth = $it->width;
$newheight = round(($newwidth * $h)/$w);
} elseif ($w > $it->height) {
$newheight = $it->height;
$newwidth = round(($newheight * $w)/$h);
} else {
$newwidth = $w;
$newheight = $h;
}
// create resize image
$img = imagecreatetruecolor($newwidth, $newheight);
$org = imagecreatefromjpeg($src);
// Resize
imagecopyresized($img, $org, 0, 0, 0, 0, $newwidth, $newheight, $w, $h);
imagedestroy($org);
imagejpeg($img, $dest);
// Free up memory
imagedestroy($img);
He tratado de liberar memoria con la función imagedestroy
pero no parecen tener ningún efecto. La secuencia de comandos se mantiene asfixia constantemente en la línea de código imagecreatefromjpeg
.
Comprobé el php.ini y la configuración memory_limit = 16M
parece que se mantiene correctamente. Pero no puedo entender por qué la memoria se está llenando. ¿No debería estar liberando la memoria al recolector de basura? Realmente no quiero aumentar la configuración memory_limit. Esto parece una mala solución que podría conducir a más problemas en el futuro.
FYI: Estoy ejecutando mi script desde el símbolo del sistema. No debería afectar la funcionalidad, pero podría influir en su respuesta, así que pensé que debería mencionarlo.
¿Alguien puede ver si me falta algo simple o si hay un error de diseño aquí? Pensarías que esta sería una tarea bastante sencilla. Sin duda, esto tiene que ser posible, ¿verdad?
Haré esto una prueba. Creo que saldrá el error más adelante en el proceso. Espero estar equivocado – gurun8
Estaba equivocado. Esto funcionó. Gracias. – gurun8
Supongo que debería haber publicado qué hacer en lugar de por qué hacerlo. – JYelton