PHPバージョン5.6.12のLAMPサーバー(共有ホスティング)で最新のWordPressバージョン(4.6)を実行しています。
私がしようとしているプログラムで10枚の画像を追加するFTPでアップロード、wp-uploads
ディレクトリを、メディアライブラリに 3つのWordPressの機能を使用してwp_insert_attachment
、wp_generate_attachment_metadata
とwp_update_attachment_metadata
。
私の問題:
PHPスクリプトが動作する場合があります(10個の画像すべてがメディアライブラリに正しく追加されます)。各画像のサイズは2M〜4Mです。
これまでに行ったこと:
php.iniでerror_loggingを有効にすると、たまにwp_generate_attachment_metadata
失敗する(つまり、5番目、6番目、7番目のイメージの処理中に)失敗し、PHPスクリプト全体が終了することがわかりました。それ以外は、error_log()からこれ以上情報を取得しません。メモリの問題が疑われたため、phpのメモリサイズを120M(私のホスティングプロバイダーから128Mに)に増やし、スクリプトの実行を100に(私のホスティングプロバイダーから120sに)しました。すべてのファイルが(もちろん)存在し、それらはすべてPNGです。そして、前述のように、テスト用に同じ10個の画像のセットを使用すると、動作する場合と動作しない場合があります...
私の質問:
wp_generate_attachment_metadata
WP 4.6に既知の問題がありますか?私のサイトをWP 4.3から4.6にアップグレードするまで、すべてが正常に機能していました...十分なメモリが問題の原因である場合、Webホスティング業者から与えられた128Mのメモリ制限を処理するようにPHPスクリプトを最適化するにはどうすればよいですか?
メモリ不足が原因で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
を指摘してくれてありがとう。これをコードに追加して、もう一度試して、問題が解決するかどうかをお知らせします。