Ich verwende die neueste WordPress-Version (4.6) auf einem LAMP-Server (Shared Hosting) mit PHP-Version 5.6.12.
Ich versuche, programmatisch 10 Bilder hinzufügen , mit ftp auf das hochgeladenen wp-uploads
Verzeichnis, in die Medienbibliothek , die drei Wordpress - Funktionen wp_insert_attachment
, wp_generate_attachment_metadata
und wp_update_attachment_metadata
.
Mein Problem:
Manchmal funktioniert mein PHP-Skript (alle 10 Bilder werden korrekt zur Medienbibliothek hinzugefügt) - und manchmal nicht (von den 10 Bildern werden nur 4, 5, 6 oder so hinzugefügt)! Jedes Bild ist 2 bis 4 Millionen groß.
Was ich bisher gemacht habe:
Ich habe error_logging über php.ini aktiviert und festgestellt, dass hin und wieder ein Fehler auftritt wp_generate_attachment_metadata
(dh während der Bearbeitung des 5., 6., 7. oder so-Images) und mein gesamtes PHP-Skript beendet wird. Ich bekomme keine weiteren Informationen aus dem error_log (). Da ich Speicherprobleme vermutete, erhöhte ich die Speichergröße für PHP auf 120 MB (mein Hosting-Anbieter gibt mir 128 Millionen) und die Skriptausführung auf 100 Sekunden (mein Hosting-Anbieter gibt mir 120 Sekunden). Alle Dateien existieren (natürlich), sie sind alle PNGs - und wie gesagt, mit demselben Satz von 10 Bildern zum Testen funktioniert es manchmal und manchmal funktioniert es nicht ...
Meine Frage:
Gibt es ein bekanntes Problem mit
wp_generate_attachment_metadata
in WP 4.6? Früher hat alles gut funktioniert, bis ich meine Site von WP 4.3 auf 4.6 aktualisiert habe ...Wenn nicht genügend Speicher das Problem verursacht, wie kann ich mein PHP-Skript optimieren, um das von meinem Webhoster angegebene 128-MB-Speicherlimit zu bewältigen?
Wie finde ich heraus, ob mein PHP-Skript aufgrund von Speichermangel beendet wird?
Danke im Voraus!
Hier ist mein Code:
$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
mich auf das Vermisste hingewiesen haben. Ich werde das zu meinem Code hinzufügen, es erneut versuchen und Sie wissen lassen, ob das Problem dadurch behoben wird.