Sto eseguendo l'ultima versione di WordPress (4.6) su un server LAMP (hosting condiviso) con PHP versione 5.6.12.
Sto provando ad aggiungere a livello di 10 immagini , caricati con ftp alla wp-uploads
directory, alla biblioteca multimediale utilizzando le tre funzioni di WordPress wp_insert_attachment
, wp_generate_attachment_metadata
e wp_update_attachment_metadata
.
Il mio problema:
A volte, il mio script PHP funziona (tutte e 10 le immagini vengono aggiunte correttamente alla libreria multimediale) - a volte no (delle 10 immagini vengono aggiunte solo 4, 5, 6 o così)! Ogni immagine ha dimensioni 2M - 4M.
Quello che ho fatto finora:
Ho abilitato error_logging tramite php.ini e ho scoperto che ogni tanto wp_generate_attachment_metadata
fallisce (cioè mentre gestisco la quinta, sesta, settima immagine) e il mio intero script PHP termina. Non ottengo ulteriori informazioni da error_log () diverso da quello. Da quando sospettavo problemi di memoria, ho aumentato la dimensione della memoria per php a 120M (i miei provider di hosting mi danno 128M) e l'esecuzione dello script a 100s (il mio provider di hosting mi dà 120s). Esistono tutti i file (ovviamente), sono tutti PNG - e, come ho detto, usando lo stesso set di 10 immagini per i test, a volte funziona e a volte non funziona ...
La mia domanda:
C'è un problema noto con
wp_generate_attachment_metadata
in WP 4.6? Tutto funzionava bene fino a quando non ho aggiornato il mio sito da WP 4.3 a 4.6 ...Se la memoria non è sufficiente a causare il problema, come potrei ottimizzare il mio script PHP per gestire il limite di memoria di 128 M fornito dal mio web hoster?
Come faccio a sapere se la mancanza di memoria provoca la chiusura del mio script PHP?
Grazie in anticipo!
Ecco il mio codice:
$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
. Lo aggiungerò al mio codice, riprovare e farti sapere se questo risolve il problema.