PHP-Aufgabenplaner: Bibliothek cron‑expression
Bei der Entwicklung von Webanwendungen in PHP besteht häufig die Notwendigkeit, bestimmte Aktionen nach einem Zeitplan auszuführen: Benachrichtigungen senden, den Cache leeren, Berichte erstellen oder Daten synchronisieren. Der integrierte Cron in Linux ist ein leistungsstarkes Werkzeug, aber seine Konfiguration erfordert Serverzugriff und ist für die dynamische Planung innerhalb von PHP-Code nicht immer praktisch. Die Bibliothek cron‑expression löst dieses Problem – sie ermöglicht das Parsen, Überprüfen und Berechnen von Ausführungszeiten von Aufgaben basierend auf CRON-Ausdrücken direkt in PHP.
In diesem Artikel werden wir uns ansehen, wie man die Bibliothek cron‑expression installiert und verwendet, einen einfachen Aufgabenplaner schreibt und Beispiele mit realen Szenarien betrachtet.
Was ist cron‑expression?
cron‑expression ist eine PHP-Bibliothek für die Arbeit mit CRON-Ausdrücken. Ein CRON-Ausdruck ist eine Zeichenfolge, die aus fünf durch Leerzeichen getrennten Feldern besteht:
* * * * *| | | | || | | | +---- Wochentag (0–7) (Sonntag = 0 oder 7)| | | +------ Monat (1–12)| | +-------- Tag des Monats (1–31)| +---------- Stunde (0–23)+------------ Minute (0–59)Zum Beispiel bedeutet der Ausdruck 30 4 * * 1-5: „jeden Wochentag um 4:30 Uhr morgens“. Die Bibliothek ermöglicht:
- Zu überprüfen, ob die aktuelle Zeit dem angegebenen Ausdruck entspricht.
- Das nächste Ausführungsdatum einer Aufgabe zu erhalten.
- Das vorherige Ausführungsdatum zu berechnen.
- Mit Bereichen, Schritten und Wertelisten zu arbeiten.
Installation
Die Installation erfolgt über Composer. Öffnen Sie ein Terminal im Stammverzeichnis Ihres Projekts und führen Sie Folgendes aus:
composer require mtdowling/cron-expressionNach der Installation binden Sie den Composer-Autoloader in Ihr PHP-Skript ein:
require 'vendor/autoload.php';Hauptfunktionen und Beispiele
1. Überprüfung der aktuellen Zeit
Angenommen, wir möchten eine Aufgabe alle 15 Minuten ausführen. CRON-Ausdruck: */15 * * * *. Erstellen wir ein Objekt und prüfen, ob die Aufgabe jetzt gestartet werden soll:
<?phpuse Cron\\CronExpression;
$expression = CronExpression::factory('*/15 * * * *');if ($expression->isDue()) { echo "Die Aufgabe sollte jetzt ausgeführt werden!";} else { echo "Die Zeit ist noch nicht gekommen.";}?>Die Methode isDue() prüft, ob die aktuelle Zeit mit dem Ausdruck übereinstimmt. Standardmäßig wird die Serverzeitzone verwendet.
2. Nächstes Ausführungsdatum erhalten
Manchmal muss man im Voraus wissen, wann eine Aufgabe ausgeführt wird:
<?phpuse Cron\\CronExpression;
$expression = CronExpression::factory('0 6 * * 1-5'); // jeden Wochentag um 6:00 Uhr$nextRun = $expression->getNextRunDate();echo "Nächste Ausführung: " . $nextRun->format('Y-m-d H:i:s');?>Ergebnis: Nächste Ausführung: 2025-03-10 06:00:00 (wenn heute Freitag ist, dann nächster Montag).
3. Vorheriges Ausführungsdatum
Die Methode getPreviousRunDate() gibt den letzten Zeitpunkt zurück, zu dem die Bedingung erfüllt war:
<?php$prevRun = $expression->getPreviousRunDate();echo "Vorherige Ausführung: " . $prevRun->format('Y-m-d H:i:s');?>4. Arbeiten mit Zeitzonen
Standardmäßig wird die Serverzeitzone verwendet, aber Sie können Ihre eigene festlegen:
<?php$expression = CronExpression::factory('0 9 * * *');$expression->setTimezone(new DateTimeZone('Europe/Berlin'));if ($expression->isDue()) { echo "In Berlin ist es jetzt 9:00 Uhr – Zeit zu handeln!";}?>Erstellen eines einfachen Aufgabenplaners
Jetzt setzen wir alles zusammen und schreiben eine kleine Klasse, die Aufgaben nach einem Zeitplan ausführt. Angenommen, wir haben eine Liste von Aufgaben mit CRON-Ausdrücken und Callbacks.
<?phpclass Auch in der Bibliothek
JSON-Verarbeitung in Rust: Die Bibliotheken serde_json und json
Überwachung von Go-Anwendungen: Bibliotheken und Tools
Swagger/OpenAPI Generierung für Swift: Werkzeuge und Codebeispiele