Saya menjalankan versi WordPress terbaru (4.6) pada server LAMP (shared hosting) dengan PHP versi 5.6.12.
Saya mencoba secara terprogram menambahkan 10 gambar , diunggah dengan ftp ke wp-uploads
direktori, ke perpustakaan media menggunakan tiga fungsi WordPress wp_insert_attachment
, wp_generate_attachment_metadata
dan wp_update_attachment_metadata
.
Masalahku:
Terkadang, skrip PHP saya berfungsi (semua 10 gambar ditambahkan ke perpustakaan media dengan benar) - dan terkadang tidak (dari 10 gambar, hanya 4, 5, 6 atau lebih yang ditambahkan)! Setiap gambar berukuran 2M - 4M.
Apa yang telah saya lakukan sejauh ini:
Saya mengaktifkan error_logging melalui php.ini dan menemukan bahwa sesekali wp_generate_attachment_metadata
gagal (yaitu saat menangani gambar 5, 6, 7 atau lebih) dan seluruh skrip PHP saya berakhir. Saya tidak mendapatkan informasi lebih dari error_log () selain itu. Karena saya mencurigai masalah memori, saya meningkatkan ukuran memori untuk php menjadi 120M (penyedia hosting saya memberi saya 128 juta) dan eksekusi skrip menjadi 100-an (penyedia hosting saya memberi saya 120-an). Semua file ada (tentu saja), semuanya PNG - dan, seperti yang saya katakan, menggunakan set 10 gambar yang sama untuk pengujian, kadang-kadang berfungsi dan kadang tidak berfungsi ...
Pertanyaan saya:
Apakah ada masalah dengan
wp_generate_attachment_metadata
WP 4.6? Semuanya digunakan dengan baik sampai saya memutakhirkan situs saya dari WP 4.3 ke 4.6 ...Jika tidak cukup memori yang menyebabkan masalah, bagaimana saya bisa mengoptimalkan skrip PHP saya untuk menangani batas memori 128 juta yang diberikan oleh web hoster saya?
Bagaimana saya mencari tahu jika kekurangan memori menyebabkan skrip PHP saya berhenti?
Terima kasih sebelumnya!
Ini kode saya:
$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
kepada saya. Saya akan menambahkannya ke kode saya, coba lagi dan beri tahu Anda jika itu menyelesaikan masalah.