Artikelimport über Cronjob verdoppelt jedes Mal Artikelbilder - Server voll

@R4M‍  der Kunde hat keine Möglichkeit, Bilder als „neu“ zu definieren, weil die Warenwirtschaft das nicht kann und deren API das auch nicht liefert.

@FloC3 schrieb:

@R4M‍  der Kunde hat keine Möglichkeit, Bilder als „neu“ zu definieren, weil die Warenwirtschaft das nicht kann und deren API das auch nicht liefert.

Hm, eigentlich liegen ja die Bilddaten nicht in der Warenwirtschaft, sondern irgendwo auf der Platte etc. Und da gibt es keinen Weg neu erstelle Bilder als Seperates abzulegen? Komisch, ich kenne einen Kunden der auch Warenwirtschaft benutzt. Bei ihm geht das.

die API der Warenwirtschaft liefer nur ein Abbild des Artikelstammes wie er aktuell ist. Wenn da 4 Bilder drin sind, sind 4 Bilder drin. Das können die selben wie vor 5 Wochen sein, es können aber auch 2 weniger oder 2 mehr sein als gestern… die API macht da keinen Unterschied. 4 Bilder sind 4 Bilder.

Hast du keine Möglichkeit, dir das Filedatum der Bilder zu holen bzw. nur die Bilder zu exportieren, die innerhalb der letzten X Stunden/Tage angelegt wurden? Alternativ kannst du dir natürlich in einer separaten DB die Bildnamen speichern, die du schon kennst und nur die neuen Bilder dann beachten.

Eigentlich müsste man ja nur einen Hash über das „Bild“ zusätzlich in der DB ablegen und via Plugin (wäre auch was für den Core) zunächst den neuen Hash vom Bild abgleichen (bei gleichen Dateinamen). Ist der Hash gleich => neues Bild verwerfen. Ist der Hash ungleich - Bild nur auf dem Datenträger austauschen und Hash in DB umändern.

Müsste man nur gucken, wo sich so ein eigenes kleines Plugin in SW einhängen kann.

so eine Funktion sollte eigentlich im Core sein und immer greifen…

und nein, ich habe keine Möglichkeit ein Filedatum oder ähnliches zu holen. Die API der Warenwirtschaft liefert diese Daten nicht und wird auch nicht extra erweitert werden.

Wie werden denn die Bilddaten im konkreten hochgeladen? Wo kommen die her und in welcher Form liegen diese vor?

die API liefer eine URL, von dort kann ich das Bild herunterladen.

 

ps: ich kann in unserem Hosting für einen Cron nur eine Datei aufrufen oder eine URL … ein Aufruf wie “shopware/bin/console sw:cron:run” ist offenbar nicht möglich…

Ohje, gerade über Konsole ist hier zu empfehlen.

@R4M‍

ich kann aber eine .sh Datei aufrufen. Habe jetzt eine cron.sh angelegt und mit chmod +x ausführbar gemacht.

die Datei liegt im Shoproot.

#!/bin/sh
#!/usr/local/bin/php

-d memory_limit=1024M bin/console sw:cron:run MeinImportJob

leider passiert gar nichts, wenn ich den Cron über das Hosting anstoße … bevor ich es über chmod ausführbar machte, kam eine Fehlermeldung. Erreicht wird die Datei also… was ist denn falsch am Script? Bin da leider nicht so fit

Wenn die cron.sh im Hauptordner der Domain liegt, dann einfach:

php bin/console sw:cron:run

Ansonsten den Pfad vor „bin“ anpassen bzw. erst mit „cd“ in das jeweilige Verzeichnis wechseln.

hab den Cron jetzt zum Laufen gebracht. Immerhin.

Bleibt noch das Bilderproblem für das mir eine praktikable Lösung fehlt…

Da ich ggf. demnächst bei einem ähnlichen Problem stehe, werde ich vermutlich an den Kunden diverse Vorgaben festlegen um genau solche Probleme zu vermeiden. Seine Artikel kann er ja über die Warenwirtschaft verwalten, aber die Bilder müssen dann halt manuell als ZIP auf den Server unter Angabe der Artikelnummer, Hash oder ähnlichen hochgeladen werden. Der Rest macht dann ein Cron-Plugin, wo dann nur noch geprüft wird, ist ein Bild nicht vorhanden dann anlegen bzw. ist ein Bild vorhanden dann das alte löschen und mit dem neuen ersetzen.