Service API

Nutzung des Cronjob-Dienstes aus anderen Modulen

Benachbarte Module fragen den Status des Moduls über eine stabile, schreibgeschützte Schnittstelle (CronjobService) ab, anstatt auf dessen interne Dienste zurückzugreifen. Überprüfen Sie zunächst die Verfügbarkeit – das Modul ist möglicherweise nicht installiert, und die Klasse kann nur automatisch geladen werden, wenn die Datei module.php geladen wurde:

<?php
use Schwendinger\Webtrees\Module\Cronjob\Services\CronjobService;

if (class_exists(CronjobService::class) && CronjobService::isFunctional()) {
    $status = CronjobService::jobStatus('mymodule:backup'); // null = unknown job
    $age = CronjobService::lastTickAge();                // seconds since last tick
    $listened = CronjobService::listenedEvents();             // event name => job names
}
FrageMethode(n)
Ist der Dienst funktionsfähig?isFunctional(), problems() (Codes: module_disabled, not_migrated, cron_library_missing, tick_stale)
Welche Funktionen sind aktiviert?features() (watch, pseudo_events, route_events), watchStatus()
Wann wurde der letzte Tick ausgeführt?lastTick() / lastTickAge() – beide Trigger-Typen (Marker-Datei data/cronjob/tick.last)
Ist ein Job aktiviert / wann wurde er zuletzt ausgeführt?isJobEnabled($name), jobStatus($name), lastRun($name) – Jobnamen sind mit einem Namespace versehen (<Modul>:<Name>)
Auf welche Ereignisse wird gewartet?listenedEvents(), listenersFor($event); Kataloge: eventCatalog(), pseudoEvents(), routeEvents()
Aktionen (die einzigen beiden)runJobNow($name) (wird beim nächsten Tick in die Warteschlange gestellt), pushEvent($name, $payload) (Ereigniswarteschlange)

Vertrag: Schreibgeschützte Methoden lösen niemals einen Fehler aus, wenn das Schema fehlt (sichere Standardwerte), Beschreibungen sind Quelltext-Strings (werden niemals vorab übersetzt), und lastRun() schließt bewusst die Job-Ausgabe aus, da diese personenbezogene Daten enthalten kann.