Dauerhafte Variable

  • Hallo,


    um eine Funktion nur 1x/Tag laufen zu lassen, möchte ich das Datum des letzten Durchlaufs speichern. Bei jedem Aufruf meiner Komponente soll geprüft werden, ob dies heute schon erfolgte. Wenn nein, läuft die Funktion durch und das Datum wird neu gesetzt.


    Gibt es eine Möglichkeit, dies ohne eigene Tabelle - also mit Bordmitteln von Joomla zu lösen?


    Vielen Dank,
    Stefan

  • Hallo,


    ja, es handelt sich um eine Komponente und es geht um eine ToDo-Liste (Tabelle), die täglich auf Fälligkeiten überprüft werden soll. Bei Fälligkeit erfolgt eine Mailbenachrichtigung.


    Was ich also suche, ist die Möglichkeit, eine Variable dauerhaft (unabhängig von Usern) zu halten und anzupassen. Die erste Idee war, via admin/config.xml eine Variable einzuführen. Die kann ich aber nicht per php ändern, sonst wäre das super!


    Vielen Dank,
    Stefan

  • Ein cron-job wäre natürlich auch o.k., wäre ein neuer Ansatz. Lieber wäre mir aber, wenn einfach bei jedem Seitenaufruf gecheckt würde, ob die Routine heute schon gelaufen ist. Damit wäre ich unabhängig von serverseitigen Einstellungen wie crontab-Einträgen. Davon abgesehen habe ich mich noch nicht damit beschäftigt, Joomla per crontab aufzurufen...
    Oder gibt es eine elegante Möglichkeit, aus Joomla heraus cronjobs zu definieren?

  • Leg eine Art lock-Datei in tmp oder cache an. Simple Text-Datei mit Inhalt Datum z.B.
    20170112


    Code
    $heute = date('Ymd');
    $lockfile = JPATH_SITE . '/tmp/locks.txt';
    $last = (int) @file_get_contents($lockfile);
    if ($heute > $last)
    {
     echo 'Do something';
     file_put_contents($lockfile, $heute);
    }


    Zu @ . Falls Datei noch nicht existiert, keine Warning und $last = 0. Kann man natürlich sauberer abwickeln.