Automatischer Import mit Cronjob

Hallo, 

leider habe ich ein Problem mit dem automatischen cronjob. Es gibt zwar eine Beschreibung aber die leuchtet mir einfach nicht ein.

Cronjobs.

Das neue Import/Export-Modul erlaubt es, CSV oder XML-Dateien in das Verzeichnis  files/import_cron/  abzulegen.

Damit die Profile für die Importe korrekt zugeordnet werden können, muss der Name des Profils im Dateinamen zwischen zwei Punkten vorhanden sein:

 

export.Artikel.Shopware.24.09.2014.csv

wäre entsprechend ebenso möglich wie

Artikel.Shopware.csv

Hätte jemand ein Beispiel, was ich wo eingeben muss?

zb.

Ordner --> files/import_cron/ --> test.csv
Import Profil --> Profilname: Artikel.Shopware.test.csv
Backend --> Grundeinstellung --> Cronjob --> Aktion: Artikel.Shopware

so würde ich das verstehen, leider funktioniert es nicht. Kann mir jemand sagen wo mein Denkfehler ist?

Also wenn ich die Anleitung korrekt verstehe,
dann sollte die Datei unter " files/import_cron/" z.B. " Artikel.Shopware.test.csv" heißen wenn dein Import Profil z.B. " Artikel - Shopware" heißt.

Die Cronjob Aktion müsste dann " SwagImportExportCron" sein, würde ich sagen.

Keine Garantie auf die Angaben, da ich selbst die Funktion noch nicht benutzt habe :wink:

also der import läuft aber nur wenn ich ihn manuel anschiebe über /backend/SwagImportExportCron/cron

ich vermute im cronjob hab ich den falschen name bei “Aktion” eingeben.

Muss dort der name der der CSV eingetragen werden oder der Name vom Import Profil?

oh man der import geht aber der shceiß cronjob startet nicht … hat keiner eine Idee?

Versteh ich nicht.

Der Cronjob läuft nur per URL: /backend/SwagImportExportCron/cron
Den musst du serverseitig aufrufen lassen, damit du einen Cronjob hast.
 

Das Cronjob-System hat damit nichts zu tun - Grundeinstellungen > Cronjobs ist da völlig unabhängig von. Den Import-Cron musst du serverseitig einrichten, dafür gibt es dann die URL oder die Konsolen-Befehle.

achso… 

Hättest du evtl. doch eine Anleitung? - Wie die Datei ausehen muss und in welches Verzeichniss ich die Datei legen muss?

also ich habe eine php datei erstellt die einen Befehl ausführt und der cron startet.

Meine Frage ist jetzt nur noch wo muss ich meine php datei ablegen und was muss ich bei der Aktion einstellen bzw. hinschreiben.

 

Oder hab ich hier etwas falsch verstanden? - Ja man kann es beim über ein Webpanel machen, ich wollte es aber shopware intern lösen.

Irgendwie ergibt da nichts wirklich Sinn von dem was du schreibst…

kann sein evtl. hab ich das auch falsch verstanden.

 

Ich gehe davon aus das ich über Grundeinstellung -> System --> Cronjob  - einen Aufgabe anlegen kann die in einem betsimmten Intervall eine aktion ausführt. Wüsste sont nicht für was dies da sein soll.

Weiterhin dachte ich über die Aktion kann ich eine datei ansprechen/ aufrufen. Also meine Datei importXYZ.php.

In dieser php steht 

<?php
header("Location:http://mein shop/backend/SwagImportExportCron/cron");  exit;  ?\> danach läuft der Import durch. Fertig SO habe ich es zumindest verstanden oder was kann man sonst mit der Aktion im Cronjob machen?

Hallo,

ich stehe vor der selben Aufgabe und verstehe den Lösungsweg auch nicht so ganz. Wie kann ich einen Import (mit Import/Export Advanced) als Cronjob ausführen lassen. Geht das über die Shopware-Cronjob-Verwaltung oder muss ich das über Konsolenbefehle machen?

@Denny: hast Du das schon gelöst?

 

Ich interessiere mich auch stark für das Thema, allerdings mal eine Frage zu der CSV Datei, vielleicht habe ich da den Sinn einfach nicht verstanden.

Die CSV Datei wird in einem Ordner abgelegt, dann kann per Cronjob diese Datei ständig importiert werden per Cronjob. Aber wie kommt die Datei da immer automatisch drauf bzw. wird aktualisiert?!

Ich finde es schade das es in dem Import/Export Modul keine Möglichkeit gibt, eine URL einzutragen und das da einfach der automatische Import angelegt werden kann.

Ansonsten wenn ich das richtig verstanden habe, müsste ich erstmal dafür sorgen, dass die CSV Datei ständig auf den FTP geladen wird und aktuell bleibt und dann müsste ich per Cronjob den Import starten… Fast gar nicht umständlich das ganze…

Deswegen gibt es ja die Rest API. Das mit dem Import Export über Dateien ist doch bloß eine Krücke.

Hallo zusammen, [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)‍ ich wollte das Thema nochmals aufwärmen :wink:

nach erfolgreichem Import, löscht sich meine Datei aus dem Ordner /files/import_cron,… meine Frage wäre nun wie ich dieses Verhalten unterbinden kann, so dass die Datei nach dem Imort nicht gelöscht wird…???

Ansonsten wenn ich das richtig verstanden habe, müsste ich erstmal dafür sorgen, dass die CSV Datei ständig auf den FTP geladen wird und aktuell bleibt und dann müsste ich per Cronjob den Import starten… Fast gar nicht umständlich das ganze…

Wie lasst ihr denn eine .csv beispielsweise einmal am Tag automatisch in den Ordner /files/import_cron/ schieben, der Rest wird ja dann im Endeffekt per Cronjob erledigt!?

Also um mal Licht hier ins Dunkle zu bringen. Auch wenn es schon ein paar Tage her ist.

Was ist ein Cronjob? (Server)
Der Cronjob wird auf dem entsprechenden Server ausgeführt auf dem der Shop liegt (sowas geht auch extern wenn ich mich nicht irre, ist aber nicht best practice). Auf jeden fall kann man das ggf. per console oder je nach Provider (Serveranbieter) in Backend-Panel des Servers einstellen. In der Regel bieten die meisten Server das einmal pro Minute an. Per Console nennt sich das ganze crontab (meistens. Will da nicht zu tief rein gehen). Dieser Cron läuft und ruft scripte auf, was auch immer man da rein schreibt. Das erwartet eine bestimmte Syntax und diese lässt sich (wenn man sie nicht kennt) einfach mit einem Cron-Geneator im Internet erstellen.

Was ist in Shopware ein Cronjob?
Das sind technisch gesehen nur Einträge in der Datenbank die einen Zeitstempel haben. Dann gibt es einen Service

SwagImportExportCron

 der die Datenbank aufruft, einmal durch die Tabelle geht und entsprechende Einträge auswertet und darauf hin andere Codes/Plugins/Crons ausführt. Das ist das was man im Backend sehen kann.

So, um das ganze zum laufen zu bekommen, muss erst auf dem Server der Cron eingestellt werden der dann besagtes php script oder die URL aufruft die in der Dokumentation steht. Der wird zb alle Minute aufgerufen und ruft den Shopware Cron auf. Wenn ich im ServerCron einstelle zb alle 15 Minuten, dann kann im ShopwareCron stehen jede Minute, aber das funktioniert dennoch nur alle 15 Minuten da das Script nicht gestartet wird wenn der Server es nicht aufruft. Darum den ServerCron Intervall immer So niedig einstellen wie der kleinste ShopwareCron intervall.

Dann klappt es auch mit dem Nachbarn :smiley:

 

Wie verhält sich das mit der ImportDatei?
Der Ordner ist, wie festgestellt schon ganz richtig. Der Dateiname muss den Profilnamen beinhalten.
Wenn ich also 3 Profile im Backend anlege (AAA, BBB, CCC) dann sind folgende Benennungen richtig/möglich:

AAA.dann.kann.kommen.was.will.csv
aber.BBB.kann.mann.auch.so.schreiben.csv
es.spielt.keine.rolle.CCC.wie.genau.csv

Es soll nur der Profilname vorhanden sein. Allerdings sollte man keinen doppelten Namen vergeben. Punkte im Namen würde ich auch nicht empfehlen.

AAA.BBB.ist.falsch.csv
AAA.AAA.ist.falsch.csv (wenn das Profil AAA.AAA heißt)

Namen sollten, so weit ich weiß mit Unterstrich oder CamelCase getrennt werden.

Profilname : HeySoGehtsAuch

mein.artikel.HeySoGehtsAuch.csv

 

Ich hoffe das hilft ein wenig weiter :slight_smile:

Weitere Fragen können auch sicher im GitterChat geklärt werden.

 

Gruß

Dwza

1 Like