cronjob.xml von einem Plugin: Wie legt man Controller für die Action fest?

Hallo Zusammen,

ich möchte ein mal pro Tag früh morgens (z.B. um 6:00 Uhr) eine Funktion von meinem Plugin ausführen. Dafür habe ich in meinem Plugin Resources/cronjob.xml das folgende:

        EET-Daten importieren
        importEET
        true
        86400
        true

Soweit ich verstehe, gibt es keinen Weg einen Controller hier festzulegen, dem die Action “importEET” gehört. Wie soll ich dann vorgehen? Wie versteht Shopware welche von der möglichen gleichnahmigen Funktionen in unterschiedlichen Dateien des Plugins aufzurufen?

(Und noch eine Zusatzfrage, wenn ich darf: wie sage ich dem System an welcher Uhrzeit soll der Job aufgeführt werden?)

Danke im Vorab!

Roman

Du musst einen Subscriber erstellen der auf das Event Shopware_CronJob_importEET hört und da definieren welche Aktion ausgeführt werden soll.

Zu welcher Uhrzeit das ausgeführt werden soll kannst du in Shopware nicht direkt beeinflussen. Du kannst nur ein Intervall d angeben. Das Cronjob-Modul von Shopware musst du dann ja eh von aussen irgendwie anstossen. Da könnte man dann definieren um welche Uhrzeit das geschehen soll. Über die console kann man auch gezielt einzelne CronJobs anstossen.

Danke dir, t2oh4e, das macht alles deutlicher.

Es sieht so aus, das per Console meine Sache anzustossen wäre für mich das richtige. Alles was mein Plugin tun muss ist diese Funktion auszuführen. Die Funktion importiert daten aus einem per FTP früher hochgeladenen CSV-Datei. Die Native-Backed-Werkzeug für solche Importe passt uns leider nicht, deshalb bastle ich ein Plugin dafür. Dem träg auch bei, dass der Datei relativ groß ist und ich denke, es wird viele Zeit benötigt, um alles zu bearbeiten und zu importieren. Und innerhalb der Shell gibt es keine Begrenzungen was die Script-Laufzeit betrifft.

Es muss, soweit ich sehe, ausreichen, wenn ich aufruf eines Shopware-CronJobs per Betriebsystem-CronJob etwa so konfiguriere (wenn ich um 6.00 Uhr jeden Tag ausfühern möchte) :

 \* 6 \* \* \* php /home/myshopwareinstallation/bin/console sw:cron:run ACTION-NAME -f 

(nach http://community.shopware.com/Cronjobs_detail_1102.html#Aufruf_per_Shell_.2F_Konsole )

Ich bin mir aber nicht sicher was ich statt ACTION-NAME haben soll. Soweit ich verstehe, mit meinem cronjob.xml wird im System das Event „Shopware_CronJob_importEET“ irgendwie registriert… Verstehe ich richtig, dass in cronjob.xml unter allen Plugins niemals wiederholt werden muss? Dann muss ACTION-NAME in meinem Fall „importEET“ sein?

Danke dir, t2oh4e, das macht alles deutlicher.

Es sieht so aus, das per Console meine Sache anzustossen wäre für mich das richtige. Alles was mein Plugin tun muss ist diese Funktion auszuführen. Die Funktion importiert daten aus einem per FTP früher hochgeladenen CSV-Datei. Die Native-Backed-Werkzeug für solche Importe passt uns leider nicht, deshalb bastle ich ein Plugin dafür. Dem träg auch bei, dass der Datei relativ groß ist und ich denke, es wird viele Zeit benötigt, um alles zu bearbeiten und zu importieren. Und innerhalb der Shell gibt es keine Begrenzungen was die Script-Laufzeit betrifft.

Es muss, soweit ich sehe, ausreichen, wenn ich aufruf eines Shopware-CronJobs per Betriebsystem-CronJob etwa so konfiguriere (wenn ich um 6.00 Uhr jeden Tag ausfühern möchte) :

* 6 * * * php /home/myshopwareinstallation/bin/console sw:cron:run ACTION-NAME -f

(nach http://community.shopware.com/Cronjobs_detail_1102.html#Aufruf_per_Shell_.2F_Konsole )

Ich bin mir aber nicht sicher was ich statt ACTION-NAME haben soll. Soweit ich verstehe, mit meinem cronjob.xml wird im System das Event “Shopware_CronJob_importEET” irgendwie registriert… Verstehe ich richtig, dass in cronjob.xml unter allen Plugins niemals wiederholt werden muss? Dann muss ACTION-NAME in meinem Fall “importEET” sein? Also:

* 6 * * * php /home/myshopwareinstallation/bin/console sw:cron:run importEET -f

Denke ich richtig, dass die obengenannte Console-Command das genannte Event feuert und das ruft danach die im Subscriber genannte Aktion auf?