Tôi đang chạy phiên bản WordPress mới nhất (4.6) trên máy chủ LAMP (lưu trữ chia sẻ) với phiên bản PHP 5.6.12.
Tôi cố gắng để lập trình thêm 10 hình ảnh , tải lên với ftp đến wp-uploads
thư mục, vào thư viện phương tiện truyền thông bằng cách sử dụng ba chức năng WordPress wp_insert_attachment
, wp_generate_attachment_metadata
và wp_update_attachment_metadata
.
Vấn đề của tôi:
Đôi khi, tập lệnh PHP của tôi hoạt động (tất cả 10 hình ảnh được thêm vào thư viện phương tiện một cách chính xác) - và đôi khi nó không (trong số 10 hình ảnh, chỉ có 4, 5, 6 hoặc hơn được thêm vào)! Mỗi hình ảnh có kích thước 2M - 4M.
Những gì tôi đã làm cho đến nay:
Tôi đã kích hoạt error_logging thông qua php.ini và phát hiện ra rằng thỉnh thoảng wp_generate_attachment_metadata
không thành công (nghĩa là trong khi xử lý hình ảnh thứ 5, 6, 7 hoặc hơn) và toàn bộ tập lệnh PHP của tôi chấm dứt. Tôi không nhận được thêm thông tin nào từ error_log () ngoài điều đó. Vì tôi nghi ngờ có vấn đề về bộ nhớ, tôi đã tăng kích thước bộ nhớ cho php lên 120M (nhà cung cấp dịch vụ lưu trữ của tôi cho tôi 128M) và thực thi tập lệnh lên 100 giây (nhà cung cấp dịch vụ lưu trữ của tôi cho tôi 120 giây). Tất cả các tệp tồn tại (tất nhiên), tất cả chúng đều là PNG - và, như tôi đã nói, sử dụng cùng một bộ 10 hình ảnh để thử nghiệm, đôi khi nó hoạt động và đôi khi nó không hoạt động ...
Câu hỏi của tôi:
Có một vấn đề được biết đến với
wp_generate_attachment_metadata
WP 4.6? Mọi thứ được sử dụng để hoạt động tốt cho đến khi tôi nâng cấp trang web của mình từ WP 4.3 lên 4.6 ...Nếu không đủ bộ nhớ gây ra sự cố, làm cách nào tôi có thể tối ưu hóa tập lệnh PHP của mình để xử lý giới hạn bộ nhớ 128M do trình duyệt web của tôi cung cấp?
Làm thế nào để tôi biết nếu thiếu bộ nhớ khiến tập lệnh PHP của tôi chấm dứt?
Cảm ơn trước!
Đây là mã của tôi:
$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
cho tôi. Tôi sẽ thêm nó vào mã của mình, thử lại và cho bạn biết nếu điều đó giải quyết được vấn đề.