Skript zeitgesteuert, automatisch starten

  • Ich würde gerne in meiner eigenen Komponente eine Aktion zeitgesteuert (also z.B jeden Tag um 12:00 Uhr) automatisch ausführen lassen. Da Joomla selber bisher noch keine Con-Jobs Funktionalität besitzt (sollte jedoch mit J4.1 kommen :thumbup:).

    Mithilfe der Forensuche habe ich bereits Artikel in diese Richtung gefunden:

    Daraus ergeben sich folgende Möglichkeiten, um automatisch Skripte ausführen zu lassen:

    • Skript per externem Cron-Job ausführen (Nutzer muss Cron-Job selbständig konfigurieren)
    • System Plugin (Jedesmal, wenn die Webseite aufgerufen wird, wird das Skript ausgeführt)
    • Komponenten View oder Modul (Jedesmal, wenn eine bestimmte Ansicht der Webseite aufgerufen wird, wird das Skript ausgeführt)

    Kennt ihr noch eine andere Möglichkeit?

    Eventuell eine, welche das Skript immer zu einer bestimmten Zeit ausführt (ausser externem Cron-Job)?


    Danke für eure Hilfe...

  • Die Sicherheitsbedenken, die PHP shell exec betreffen, müsste man wohl erst ausräumen, neben der Verfügbarkeit. Ich vermute daher, dass Joomla das nicht so umsetzen wird, vielleicht als Pseudo Cron.


    Was meinst du mit externen Cronjob? Es gibt Anbieter, da kannst du deine Seite von einem anderen Server aus aufrufen, normal wäre aber doch, dass du selbst einen Cronjob auf deinem Server anlegst, sozuagen intern, vor allem wenn du PHP cli nutzen könntest.

  • Könnte man während der Installation der Komponente mithilfe von PHP einen Cronjob auf dem Server anlegen?

    Mit externem Cronjob meine ich einen Cronjob, der nicht direkt aus dem Joomla CMS heraus erstellt werden kann. Also wenn er via cPanel des Providers oder via Dienstleister (wie z.B https://cron-job.org/de/) erstellt werden muss.

  • Morgen,


    in diversen Erweiterungen habe ich eine Controllermethode eingebaut, welche jedoch nur mit einem eingestellen "Startschlüssel" funktioniert, der dem Skriptaufruf mitgegeben werden muss.


    Das ist quasi deine letzte Variante 1, der User muss seinen Cronjob egal, ob von Extern oder vom selben Server einrichten ala:

    Code
    0 0 * * * /usr/bin/php /ordner/zum/script.php
  • System Plugin (Jedesmal, wenn die Webseite aufgerufen wird, wird das Skript ausgeführt)

    Halte ich für die sinnvollste Variante, wenn du dich nicht darauf verlassen willst, dass der Benutzer einen Cronjob selbst konfigurieren kann.

    Du kannst dir ja irgendwo merken / speichern, wann der Job zuletzt ausgeführt wurde. Weil je nachdem, um wie viele Seitenbesuche es da pro Tag geht, willst du den Job wahrscheinlich nicht jedes Mal komplett ausführen. Also in das Plugin erst einen Check einbauen, ob der Job heute schon ausgeführt wurde und wenn nicht, dann ab dafür! ;-)