J'utilise la dernière version de WordPress (4.6) sur un serveur LAMP (hébergement partagé) avec PHP version 5.6.12.
J'essaie d' ajouter par programme 10 images , téléchargées avec ftp dans le wp-uploads
répertoire, à la bibliothèque multimédia en utilisant les trois fonctions WordPress wp_insert_attachment
, wp_generate_attachment_metadata
et wp_update_attachment_metadata
.
Mon problème:
Parfois, mon script PHP fonctionne (les 10 images sont correctement ajoutées à la bibliothèque multimédia) - et parfois non (sur les 10 images, seulement 4, 5, 6 environ sont ajoutées)! Chaque image a une taille de 2M à 4M.
Ce que j'ai fait jusqu'à présent:
J'ai activé error_logging via php.ini et j'ai découvert que de temps en temps wp_generate_attachment_metadata
échoue (c'est-à-dire lors de la gestion de la 5ème, 6ème, 7ème image) et mon script PHP complet se termine. Je n'obtiens plus d'informations de error_log () à part ça. Comme je soupçonnais des problèmes de mémoire, j'ai augmenté la taille de la mémoire pour php à 120M (mes hébergeurs me donnent 128M) et l'exécution du script à 100s (mon hébergeur me donne 120s). Tous les fichiers existent (bien sûr), ce sont tous des fichiers PNG - et, comme je l'ai dit, en utilisant le même ensemble de 10 images pour les tests, cela fonctionne parfois et parfois cela ne fonctionne pas ...
Ma question:
Existe-t-il un problème connu avec
wp_generate_attachment_metadata
WP 4.6? Tout fonctionnait bien jusqu'à ce que je mette à jour mon site de WP 4.3 à 4.6 ...Si la mémoire insuffisante est à l'origine du problème, comment pourrais-je optimiser mon script PHP pour gérer la limite de mémoire de 128 Mo donnée par mon hébergeur?
Comment savoir si un manque de mémoire entraîne la fin de mon script PHP?
Merci d'avance!
Voici mon code:
$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
. Je vais ajouter cela à mon code, réessayer et vous faire savoir si cela résout le problème.