# Cronjob

> Cron-Job-Scheduler-Dienst für webtrees

---

![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)
![webtrees major version](https://img.shields.io/badge/webtrees-v2.2|v2.3-green)

Ein **Cron-Job-Scheduler-Dienst** für webtrees: plane Wartungs-/Batch-Jobs mit Standard-Cron-Ausdrücken, beobachte deren Ausführungshistorie in der Admin-UI und trigger sie manuell. Das Modul ist der *Dienst*; das OS (klassisches Cron oder ein systemd-Timer) muss nur ein kleines Skript einmal pro Minute aufrufen.

- **Job-Registry + Ausführungshistorie** in zwei eigenen Tabellen (`cj_job`, `cj_run`)
- **Admin-UI** (Steuerungspanel): Job-Liste, Create/Edit-Formular, Ausführungshistorie, jetzt ausführen, aktivieren/deaktivieren, löschen
- **Isolierte Ausführung**: jeder Job läuft als separater PHP-Kindprozess ([`proc_open`](https://www.php.net/manual/de/function.proc-open.php), kein Shell), mit pro-Job-Timeout und erfasster Ausgabe
- **Selbst-Registrierung**: andere Module können ihre Jobs anbieten (ein <a href="https://github.com/bschwede/wt-cronjob/tree/main/cron-jobs.php" target="_blank" rel="noopener"><code>cron-jobs.php</code></a>
-Manifest oder eine `getCronJobs()`-Methode); sie erscheinen hier, deaktiviert erstellt und bereit zum Aktivieren
- **Ereignisgesteuerte Jobs**: Jobs können auf Ereignisse statt auf Zeitpläne reagieren — über einen token-geschützten **Webhook**, einen direkten `EventQueue::push()`-Aufruf, die eingebauten **Pseudo-Event**-Poller oder **Route-Events**
- **Fehlerbenachrichtigung**: pro-Job-Opt-in zur Benachrichtigung der Admin-Konten bei Job-Fehlern
- **Offline-Bewusstsein**: während `data/offline.txt` existiert, wird der Tick vor jedem Datenbankzugriff übersprungen
- **Keine Core-Änderungen, keine Änderungen an anderen Modulen**

![Cronjob Scheduler](img/cj/cronjob-scheduler.png)

Ursprünglich entwickelt als Support-Modul für [LinkEnhancer](../linkenhancer), um dessen Indizes aktuell zu halten.

## Support

- **Issues**: Für Ideen oder beim Finden eines Bugs kann ein [Issue](https://codeberg.org/bschwede/wt-cronjob/issues) erstellt werden.
- **Übersetzungen**: [Beitragen auf Codeberg Weblate](https://translate.codeberg.org/projects/wt-modules/cronjob/)

---

Section pages:

- [Einrichtung](/wt-modules/de/docs/cronjob/setup/): Installation und Voraussetzungen
- [Verwendung](/wt-modules/de/docs/cronjob/usage/): Jobs erstellen, Ausführungshistorie und Admin-UI
- [Der Tick](/wt-modules/de/docs/cronjob/tick/): Wie 'tickt' das Modul
- [Ereignisse](/wt-modules/de/docs/cronjob/events/): Ereignisgesteuerte Jobs, Webhooks, Pseudo-Events und Route-Events
- [Howto](/wt-modules/de/docs/cronjob/howto-use/): Wie können andere benutzerdefinierte Module dieses Cronjob-Modul nutzen?
- [CLI-Skripte](/wt-modules/de/docs/cronjob/cli-scripts/): Command-Line-Skripte und Wartung
- [Sicherheit](/wt-modules/de/docs/cronjob/security/): Sicherheitsmodell und Befehlsvalidierung
