Я использую последнюю версию WordPress (4.6) на сервере LAMP (виртуальный хостинг) с версией PHP 5.6.12.
Я пытаюсь программно добавить 10 изображений , загруженных с помощью ftp в wp-uploads
каталог, в библиотеку мультимедиа, используя три функции WordPress wp_insert_attachment
, wp_generate_attachment_metadata
и wp_update_attachment_metadata
.
Моя проблема:
Иногда мой PHP-скрипт работает (все 10 изображений добавляются в медиатеку правильно), а иногда - нет (из 10 изображений добавляются только 4, 5, 6 или около того)! Размер каждого изображения составляет 2-4 метра.
Что я сделал до сих пор:
Я включил error_logging через php.ini и обнаружил, что время от времени происходит wp_generate_attachment_metadata
сбой (т.е. при обработке 5-го, 6-го, 7-го или около того изображения), и весь мой PHP-скрипт завершается. Я не получаю больше информации от error_log (), кроме этого. Так как я подозревал проблемы с памятью, я увеличил объем памяти для php до 120M (мои провайдеры хостинга дают мне 128M) и выполнение скриптов до 100s (мой провайдер хостинга дает мне 120s). Все файлы существуют (конечно), все они в формате PNG - и, как я уже сказал, для тестирования используется один и тот же набор из 10 изображений, иногда он работает, а иногда не работает ...
Мой вопрос:
Есть ли известная проблема
wp_generate_attachment_metadata
в WP 4.6? Раньше все работало нормально, пока я не обновил свой сайт с WP 4.3 до 4.6 ...Если проблема вызвана недостаточным объемом памяти, как я могу оптимизировать свой PHP-скрипт для обработки ограничения памяти 128 МБ, заданного моим веб-хостером?
Как я узнаю, что нехватка памяти приводит к прекращению работы моего PHP-скрипта?
Заранее спасибо!
Вот мой код:
$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
. Я добавлю это в мой код, попробуйте еще раз и сообщу, решит ли это проблему.guid
вызвала проблему. С добавленным гидом теперь он работает на 100%. Принимая во внимание, что с отсутствующим гидом, иногда это работало, иногда это не работало - странно :-) СПАСИБО ВНОВЬ ashikra