Estoy ejecutando la última versión de WordPress (4.6) en un servidor LAMP (alojamiento compartido) con PHP versión 5.6.12.
Estoy tratando de agregar mediante programación 10 imágenes , cargadas con ftp al wp-uploads
directorio, a la biblioteca de medios usando las tres funciones de WordPress wp_insert_attachment
, wp_generate_attachment_metadata
y wp_update_attachment_metadata
.
Mi problema:
A veces, mi script PHP funciona (las 10 imágenes se agregan correctamente a la biblioteca de medios), y a veces no (de las 10 imágenes, solo se agregan 4, 5, 6 o más). Cada imagen tiene un tamaño de 2M a 4M.
Lo que he hecho hasta ahora:
Habilité error_logging a través de php.ini y descubrí que de vez en cuando wp_generate_attachment_metadata
falla (es decir, al manejar la 5ta, 6ta, 7ma o más imágenes) y mi script PHP completo termina. No obtengo más información de error_log () aparte de eso. Como sospeché problemas de memoria, aumenté el tamaño de la memoria para php a 120M (mis proveedores de hosting me dan 128M) y la ejecución de script a 100s (mi proveedor de hosting me da 120s). Todos los archivos existen (por supuesto), son todos PNG y, como dije, usando el mismo conjunto de 10 imágenes para probar, a veces funciona y a veces no funciona ...
Mi pregunta:
¿Hay algún problema conocido con
wp_generate_attachment_metadata
WP 4.6? Todo solía funcionar bien hasta que actualicé mi sitio de WP 4.3 a 4.6 ...Si el problema no es suficiente memoria, ¿cómo podría optimizar mi script PHP para manejar el límite de memoria de 128M dado por mi proveedor de alojamiento web?
¿Cómo puedo saber si la falta de memoria hace que mi script PHP termine?
¡Gracias por adelantado!
Aquí está mi código:
$post_id = 1234;
$images = array('filename1.png', 'filename2.png', ... 'filename10.png');
for($i = 0; $i < 10; $i++) {
$attachment = array(
'post_mime_type' => 'image/png',
'post_title' => 'my description',
'post_content' => 'my description',
'post_status' => 'inherit'
);
$image_id = wp_insert_attachment($attachment, $images[$i], $post_id);
$image_data = wp_generate_attachment_metadata($image_id, $images[$i]);
wp_update_attachment_metadata($image_id, $image_data);
}
guid
. Agregaré eso a mi código, intente nuevamente y le haré saber si eso resuelve el problema.