Fehlende Bilder

Hallo zusammen (:

Zum Hintergrund:

Wir nutzen Shopware 5.4.2 und die Artikel werden über den Batch-Upload über die Artikel-REST-API angelegt.

Ich lade die Bilder für die Artikel hoch und und füge sie dann über die REST-API hinzu.

 

Zum Problem:

Ich habe festgestellt, dass es manche Artikel gibt, bei denen die Bilder fehlen. Laut dem Backend ist dem Artikel ein Bild zugewiesen, aber das Bild existiert nicht als Datei auf dem Server und man findet es auch nicht in der Medienverwaltung.

Also habe ich mal in die Datenbank geschaut und folgendes herausgefunden:

In der Tabelle s_articles_img ist dem Artikel das Bild zugeordnet und dort steht auch eine Media-ID

Jedoch, wenn ich diese ID dann in der Tabelle s_media suche, gibt es keine Einträge.

 

Meine Gedanken dazu:

Wenn es einen Fehler beim Upload der Datei auf den Server gab, hätte er doch nicht im Artikel die Media-ID angegeben ohne in der Tabelle s_media einen Eintrag zu generieren, oder?

Aus diesem Grund hätte ich einen Fehler beim Upload ausgeschlossen. Oder liege ich da falsch?

Hatte schonmal jemand dieses Phänomen?

Wie könnte das entstehen?

Die Behebung des Problems ist kein Problem, ich suche einfach nach Einträgen in der s_articles_img, deren Media-ID nicht in der s_media-Tabelle existiert und lade die Bilder erneut hoch.

Aber wie kann ich verhindern, dass das wieder passiert?

 

Viele Grüße,

Conny

Evtl. musst Du nach dem Hinzufügen der Bilder, noch den folgenden Call ausführen:

https://developers.shopware.com/developers-guide/rest-api/api-resource-generate-article-images/

Hallo NextMike (:

 

Danke für die Antwort. Da wäre ich bei dir, wenn es gar nicht funktionieren würde die Bilder hinzuzufügen. Aber es funktioniert grundsätzlich, das Problem taucht nur bei ganz wenigen Artikeln auf. Vor allem fehlt leider nicht nur das Thumbnail sondern auch die Originalversion vom Bild.

lade die Bilder für die Artikel hoch

Vielleicht kommen die Bilder hier schon gar nicht? Das mal überprüft? Auch mal die PHP UploadSize überprüft? Nicht das bestimmte Bilder einfach zu groß sind, und deshalb beim „hochladen“ nicht angekommen.

Hallo R4M (:

Danke für den Vorschlag. Habe das gerade mal getestet. Wenn ein Bild nicht ankommt, ergo nicht unter dem angegebenen Pfad existiert, dann wird ein 500er Fehler geworfen. Am Artikel wird dann aber nichts verändert.

Die Bilder liegen auch auf dem Server an der Stelle, zu der sie hochgeladen wurden. Sind alle recht klein, weit unter 1MB.

@Conny schrieb:

Hallo NextMike (:

 

Danke für die Antwort. Da wäre ich bei dir, wenn es gar nicht funktionieren würde die Bilder hinzuzufügen. Aber es funktioniert grundsätzlich, das Problem taucht nur bei ganz wenigen Artikeln auf. Vor allem fehlt leider nicht nur das Thumbnail sondern auch die Originalversion vom Bild.

machst du den Call oder nicht? 

@NextMike schrieb:

@Conny schrieb:

Hallo NextMike (:

 

Danke für die Antwort. Da wäre ich bei dir, wenn es gar nicht funktionieren würde die Bilder hinzuzufügen. Aber es funktioniert grundsätzlich, das Problem taucht nur bei ganz wenigen Artikeln auf. Vor allem fehlt leider nicht nur das Thumbnail sondern auch die Originalversion vom Bild.

machst du den Call oder nicht? 

Nein, da es auch so funktioniert, dass die Artikel mit Bildern und Thumbnails angelegt werden. Also meinst du, das könnte etwas bringen den Call hinzuzufügen? Was ist dein Gedanke dahinter?

500er Fehler

Ah, also mal ganz schnell im PHP Server Log (nicht Shopware Log) nachschauen was dort geschrieben steht. 

@Conny schrieb:

@NextMike schrieb:

@Conny schrieb:

Hallo NextMike (:

 

Danke für die Antwort. Da wäre ich bei dir, wenn es gar nicht funktionieren würde die Bilder hinzuzufügen. Aber es funktioniert grundsätzlich, das Problem taucht nur bei ganz wenigen Artikeln auf. Vor allem fehlt leider nicht nur das Thumbnail sondern auch die Originalversion vom Bild.

machst du den Call oder nicht? 

Nein, da es auch so funktioniert, dass die Artikel mit Bildern und Thumbnails angelegt werden. Also meinst du, das könnte etwas bringen den Call hinzuzufügen? Was ist dein Gedanke dahinter?

Man sollte erstmal die Basics sauber umsetzen. Solage dies nicht der Fall ist, sind Fehlverhalten zu erwarten.

@NextMike schrieb:

@Conny schrieb:

@NextMike schrieb:

@Conny schrieb:

Hallo NextMike (:

 

Danke für die Antwort. Da wäre ich bei dir, wenn es gar nicht funktionieren würde die Bilder hinzuzufügen. Aber es funktioniert grundsätzlich, das Problem taucht nur bei ganz wenigen Artikeln auf. Vor allem fehlt leider nicht nur das Thumbnail sondern auch die Originalversion vom Bild.

machst du den Call oder nicht? 

Nein, da es auch so funktioniert, dass die Artikel mit Bildern und Thumbnails angelegt werden. Also meinst du, das könnte etwas bringen den Call hinzuzufügen? Was ist dein Gedanke dahinter?

Man sollte erstmal die Basics sauber umsetzen. Solage dies nicht der Fall ist, sind Fehlverhalten zu erwarten.

Kannst du mich dann bitte auf die Quelle mit den Basics verweisen, in der das drin steht?

Ich frage mich, wozu es die Batch-Funktion für die Artikel gibt, wenn ich sowieso dann für jeden Artikel einzeln nochmal eine Neuerstellung der Thumbnails anstoßen muss. Widerspricht sich das nicht? Also ich will nicht sagen, dass deine Aussage falsch ist, aber wenn sie richtig ist, dann hat Shopware das komisch umgesetzt :smiley: Deswegen interessiert mich die Quelle, will mich ja weiterbilden (:

 

Also ich habe jetzt für die über 3000 Artikel, für die der Fehler auftrat, die Bilder über die REST-Api erneut hochladen lassen. Hier hat es bei allen davon ohne Probleme funktioniert und die Bilder sind alle da.(ohne Thumbnail-Neuerstellungs-Aufruf)

Jetzt bin ich gespannt, wann ich wieder Artikel habe, bei denen die Bilder fehlen. Ich finde das Verhalten halt extrem seltsam, weil im Artikel das Bild angegeben bleibt, aber in der Medien-Tabelle rausgenommen ist. (leider kann ich eben nicht sagen, ob das Bild je da war, aber jetzt kann ich es und muss mal abwarten…)

@R4M schrieb:

500er Fehler

Ah, also mal ganz schnell im PHP Server Log (nicht Shopware Log) nachschauen was dort geschrieben steht. 

Interessanterweise gar keiner. Ich habe die REST-API über ein Skript von der Konsole aus aufgerufen. Ich vermute mal, dass Shopware da keinen PHP-Fehler wirft, weil es den Fehler abfängt und dann weiter gibt ^^

Update: Heute Morgen gab es keine Artikel, die das Problem hatten.

Ich habe dann mal das “sw:media:cleanup --delete -n” laufen lassen und jetzt habe ich wieder 4 fehlerhafte Artikel. Den Start hatte ich um 8 Uhr gemacht. Bei über 130 Tausend Artikeln mit entsprechend Bildern läuft das ne Zeit :smiley:

Alle haben eine Changetime von 2020-12-18 08:28:06, die ArtikelIDs sind aufsteigend und alles sind neue Artikel

Weder im Shopware- noch im Log vom Server sind irgendwelche Fehler eingetragen

Es spricht meiner Meinung nach also alles dafür, dass es Probleme zu geben scheint, wenn das Media Cleanup und ein Artikelimport parallel laufen. Fragt sich, ob da irgendetwas bekannt ist.

dass Shopware da keinen PHP-Fehler wirft

Moment! Bitte NICHT das Log mit Shopware verwechseln! PHP Server Fehler haben mit Shopware nichts zu tun. Diese werden auch angelegt, wenn man per Console arbeitet. Und ein 500er Fehler ist immer ein PHP Server Fehler, da muss man in den Logs zur jeweiligen Domain suchen, nicht im Shopware Log. In der Regel werden die als „error_log“ abgelegt - ggf. Hoster fragen. 

@R4M schrieb:

dass Shopware da keinen PHP-Fehler wirft

Moment! Bitte NICHT das Log mit Shopware verwechseln! PHP Server Fehler haben mit Shopware nichts zu tun. Diese werden auch angelegt, wenn man per Console arbeitet. Und ein 500er Fehler ist immer ein PHP Server Fehler, da muss man in den Logs zur jeweiligen Domain suchen, nicht im Shopware Log. In der Regel werden die als „error_log“ abgelegt - ggf. Hoster fragen. 

Keine Sorge, habe ich nicht (;

Habe im PHP-Log von Apache und im Log von Shopware geschaut.

 

Also mittlerweile habe ich herausgefunden, dass es irgendwie nur auftritt, wenn neue Artikel angelegt werden. Wenn er Bilder zu bestehenden Artikeln hinzufügt, dann tritt das Problem nicht auf.