Estou executando a versão mais recente do WordPress (4.6) em um servidor LAMP (hospedagem compartilhada) com a versão 5.6.12 do PHP.
Eu estou tentando programaticamente adicionar 10 imagens , carregadas com ftp para o wp-uploads
diretório, para a biblioteca de mídia usando as três funções do WordPress wp_insert_attachment
, wp_generate_attachment_metadata
e wp_update_attachment_metadata
.
Meu problema:
Às vezes, meu script PHP funciona (todas as 10 imagens são adicionadas à biblioteca de mídia corretamente) - e às vezes não (das 10 imagens, apenas 4, 5, 6 são adicionadas)! Cada imagem tem 2M - 4M de tamanho.
O que eu fiz até agora:
Eu ativei o error_logging via php.ini e descobri que de vez em quando wp_generate_attachment_metadata
falha (ou seja, ao manipular a imagem 5, 6, 7 ou mais) e todo o meu script PHP termina. Não recebo mais informações do error_log () além disso. Como suspeitei de problemas de memória, aumentei o tamanho da memória do php para 120M (meus provedores de hospedagem me deram 128M) e a execução de scripts para 100s (meu provedor de hospedagem me deu 120s). Todos os arquivos existem (é claro), são todos PNGs - e, como eu disse, usando o mesmo conjunto de 10 imagens para teste, às vezes funciona e às vezes não funciona ...
Minha pergunta:
Existe um problema conhecido
wp_generate_attachment_metadata
no WP 4.6? Tudo funcionava bem até eu atualizar meu site do WP 4.3 para 4.6 ...Se não houver memória suficiente causando o problema, como eu poderia otimizar meu script PHP para lidar com o limite de 128M de memória fornecido pelo meu web hoster?
Como descubro se falta de memória faz com que meu script PHP seja encerrado?
Desde já, obrigado!
Aqui está o meu 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
para mim. Acrescentarei isso ao meu código, tente novamente e informe se isso resolve o problema.