Neu CronJob extern aufrufen

kronos

Mitglied
16. Dezember 2022
37
1
Hallo zusammen,

ich bin neu in der JTL-Pluginentwicklung und versuche mich gerade an einem CronJob, den ich gern von extern gesteuert alle paar Minuten aufrufen möchte.
Dieser soll mir ein paar Daten aktualisieren, unter anderem Artikelpreise.
Im Demoplugin fand ich zwar eine Implementierung, wie man einen CronJob in JTL einrichtet, aber das minimale Intervall beträgt hier 1 Stunde. Da ich es aber z.B. alle 5 Minuten ausführen möchte, kann ich dies leider nicht verwenden.
Daher würde ich gerne meine CronJob.php von Extern aufrufen, erhalte aber beim Aufruf der URL den Fehler 403, Forbidden:
/plugins/MyPlugin/CronJob.php

Gibt es eine Möglichkeit, meinen CronJob von Extern zu steuern?

Danke und viele Grüße,
Tobi
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.261
337
Hallo zusammen,

ich bin neu in der JTL-Pluginentwicklung und versuche mich gerade an einem CronJob, den ich gern von extern gesteuert alle paar Minuten aufrufen möchte.
Ich weiß natürlich nicht genau, was du vorhast, aber vielleicht ist auch mal ein Gedanke aus einer ganz andere Reichtung angebracht:
Lass doch den Job direkt vom crond ausführen. Also direkt in die crontab so was in der Art reinschreiben: */5 * * * * /usr/local/bin/php /var/www/htdocs/mein_cronjob.php
 

kronos

Mitglied
16. Dezember 2022
37
1
Ich weiß natürlich nicht genau, was du vorhast, aber vielleicht ist auch mal ein Gedanke aus einer ganz andere Reichtung angebracht:
Lass doch den Job direkt vom crond ausführen. Also direkt in die crontab so was in der Art reinschreiben: */5 * * * * /usr/local/bin/php /var/www/htdocs/mein_cronjob.php
Hatte ich auch schon überlegt.
Kann ich dann darüber auch die JTL-Klassen nutzen, um Artikel zu bearbeiten?
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.261
337
Hatte ich auch schon überlegt.
Kann ich dann darüber auch die JTL-Klassen nutzen, um Artikel zu bearbeiten?
Wenn dein Cronjob ein php Script sein soll, musst du die benötigten klassen natürlich mit include bzw. require einbinden, sonst kannst du nicht "irgendwie automatisch" darauf zugreifen.

Abhängig von deinen zu aktualisierenden Daten bzw. dem was du überhaupt machen willst, könntest du ja auch vielleicht direkt in die Datenbank schreiben? Also ganz ohne PHP und irgendwelchen Klassen.
 

kronos

Mitglied
16. Dezember 2022
37
1
Wenn dein Cronjob ein php Script sein soll, musst du die benötigten klassen natürlich mit include bzw. require einbinden, sonst kannst du nicht "irgendwie automatisch" darauf zugreifen.

Abhängig von deinen zu aktualisierenden Daten bzw. dem was du überhaupt machen willst, könntest du ja auch vielleicht direkt in die Datenbank schreiben? Also ganz ohne PHP und irgendwelchen Klassen.
Das mit den include/require ist klar. Dann teste ich mal das als erstes aus, vielleicht klappt das ja schon so direkt.

Im Grunde möchte ich anhand verschiedener Parameter die Artikelpreise aktualisieren.
Die sollten dann natürlich auch in de WaWi verfügbar sein. Daher hätte ich schon die Standard-Methoden von JTL genutzt.
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.261
337
Im Grunde möchte ich anhand verschiedener Parameter die Artikelpreise aktualisieren.
Bist du sicher, dass du in deinem Fall die Artikelpreise in der Shop Datenbank verändern willst?
Die Wawi ist doch das führende System, oder ist das nicht generell so?
Vielleicht kenn ich mich da zuwenig aus, aber wirst du dir nicht beim nächsten Abgleich die Artikelpreise wieder überschrieben?
 

kronos

Mitglied
16. Dezember 2022
37
1
Dann ist die Standard-Methode natürlich die geänderten Preise in eine CSV zu schreiben, und diese CSV dann mit der JTL-Ameise importieren.
Geht das auch automatisiert direkt in der WaWi ohne mein Eingrifen oder nur über direktem Schreiben der Preise in der MS SQL-DB?
Die Preise sollten dann natürlich auch von er WaWi automatisch im OnlineShop landen, ohne dass z.B. auch WaWi laufen muss.
 
Zuletzt bearbeitet:

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.261
337
Die Ameise kannst du mit den entsprechenden Parametern zeitgesteuert ausführen lassen.

Vom Prinzip her, sieht der Befehl dann so aus:
C:\Program Files (x86)\JTL-Software\JTL-wawi-ameise.exe –server=host.domain.de –database=eazybusiness –dbuser=benutzer –dbpass=passwort –templateid=xyz -inputfile=dieGeändertenPreise.csv und den Befehl kannst du dann mit einem Zeitplandienst ausführen lassen (z.b. Windows Aufgabenplaner)
 

kronos

Mitglied
16. Dezember 2022
37
1
Die Ameise kannst du mit den entsprechenden Parametern zeitgesteuert ausführen lassen.

Vom Prinzip her, sieht der Befehl dann so aus:
C:\Program Files (x86)\JTL-Software\JTL-wawi-ameise.exe –server=host.domain.de –database=eazybusiness –dbuser=benutzer –dbpass=passwort –templateid=xyz -inputfile=dieGeändertenPreise.csv und den Befehl kannst du dann mit einem Zeitplandienst ausführen lassen (z.b. Windows Aufgabenplaner)
Das wäre schonmal nicht so schlecht.
Das würde dann quasi die Preise sowohl in de WaWi als auch im Shop gleichzeitig anpassen?
So muss aber immer der Server mit der WaWi-Installation 24/7 laufen...

Die Preise direkt in der DB anpassen, ist das möglich?
Da müsste ich mich dann wohl darum kümmern, dass ein Artikel zeitgleich in der WaWi und im Shop geändert wird, richtig?
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.261
337
Das wäre schonmal nicht so schlecht.
Das würde dann quasi die Preise sowohl in de WaWi als auch im Shop gleichzeitig anpassen?
Nein, die werden nicht gleichzeitig angepasst.
Die Ameise würde hier die Daten in der Wawi verändern und der Shop wird eben dann aktualisiert, wenn der Abgleich läuft.

So muss aber immer der Server mit der WaWi-Installation 24/7 laufen...
Macht er das nicht sowieso? Der Shop aktualisiert sich doch immer wieder mit der Wawi 🤔


Die Preise direkt in der DB anpassen, ist das möglich?
Da müsste ich mich dann wohl darum kümmern, dass ein Artikel zeitgleich in der WaWi und im Shop geändert wird, richtig?
Solangsam weiß ich jetzt nicht mehr, in welcher Datenbank du ändern willst, sorry!

Du kannst die Preise auch in der Datenbank vom Shop ändern. Dann wird sie der Abgleich mit der Wawi wieder überschreiben und dann änderst du sie mit deinem Cronjob u.s.w.
Das klinkt aber irgendwie "falsch".
Ich würde den Preis einmalig im führenden System ändern. Dann in den Shop übernehmen lassen. Fertig.
 

kronos

Mitglied
16. Dezember 2022
37
1
Nein, die werden nicht gleichzeitig angepasst.
Die Ameise würde hier die Daten in der Wawi verändern und der Shop wird eben dann aktualisiert, wenn der Abgleich läuft.


Macht er das nicht sowieso? Der Shop aktualisiert sich doch immer wieder mit der Wawi 🤔



Solangsam weiß ich jetzt nicht mehr, in welcher Datenbank du ändern willst, sorry!

Du kannst die Preise auch in der Datenbank vom Shop ändern. Dann wird sie der Abgleich mit der Wawi wieder überschreiben und dann änderst du sie mit deinem Cronjob u.s.w.
Das klinkt aber irgendwie "falsch".
Ich würde den Preis einmalig im führenden System ändern. Dann in den Shop übernehmen lassen. Fertig.
So wie ich das bisher verstanden habe, muss der DB-Server nicht auch zugleich das WaWi-Hauptsystem sein.
Demnach könnte der DB-Server eigenständig sein und man hat nur enstprechend die Client-PCs, die dann das WaWi-System installiert haben. Oder hab ich das falsch verstanden?

Mir gehts im Prinzip darum, dass ich automatisiert meine Preise anpassen möchte unter gewissen Rahmenbedingungen. Alle 5 Minuten.
Am liebsten wär es mir, ein kleines Tool zu programmieren, welches am DB-Server läuft.
Dieses ändert dann alle 5 Minuten die Preise in der MS SQL-DB fürs WaWi und zeitgleich auch in der DB im OnlineShop.
Somit müssten doch alle angebundenen WaWi-Clients immer auch den selben, aktuellen Preisstand haben oder?
Auch das Shopsystem ist dann immer mit dem WaWi aktuell.

Dadurch würd ich mit sowohl die Ameise als auch den Worker-Anstoß sparen, richtig?

Wäre das Vorhaben so machbar oder führt gar kein Weg an der Ameise + Worker vorbei?
 

elevennerds.de

Sehr aktives Mitglied
23. September 2015
1.187
179
Wenn Du einfach nur die Preise in der DB änderst, dann fehlt das Signal, dass der Artikel wegen der Änderung neu zum Shop übertragen werden muss. Deswegen, mach das mit der Ameise.
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.261
337
So wie ich das bisher verstanden habe, muss der DB-Server nicht auch zugleich das WaWi-Hauptsystem sein.
Demnach könnte der DB-Server eigenständig sein und man hat nur enstprechend die Client-PCs, die dann das WaWi-System installiert haben. Oder hab ich das falsch verstanden?
Auf dem Gerät, auf dem der Datenbankserver installiert ist, muss natürlich keine Wawi installiert sein.
Das die Wawi das führende System ist bedeutet, das Änderungen in der Wawi die Daten im Shop überschreiben.
Wenn du also Artikeldaten im Shop änderst (mysql), werden sie beim nächsten Abgleich wieder mit den Daten aus der Wawi (mssql) überschrieben.

Dadurch würd ich mit sowohl die Ameise als auch den Worker-Anstoß sparen, richtig?
Versteh ich nicht. Wieso willst du den Worker weg lassen?
Der Abgleich mit dem Shop muss doch erfolgen. Die Online Verkäufe müssen doch irgendwie in die Wawi kommen 🤔
 

Ähnliche Themen