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
}| Frage | Methode(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.