Was ist ein PHP-Task-Scheduler?
Ein Task-Scheduler (Job Scheduler) ist eine Bibliothek für PHP, die es ermöglicht, periodische Aufgaben (Cron-Jobs) direkt aus dem Anwendungscode heraus auszuführen, ohne auf den systemeigenen crond angewiesen zu sein. Sie ist besonders nützlich auf Shared-Hostings, wo der Zugriff auf crontab eingeschränkt ist, oder in containerisierten Umgebungen (Docker).
Wozu braucht man einen Scheduler?
- Autonomie — alle Regeln für die Periodizität werden im PHP-Code gespeichert, nicht in Systemkonfigurationen.
- Flexibilität — Zeitpläne können dynamisch geändert, Aufgaben angehalten und die Ausführung protokolliert werden.
- Integration — lässt sich leicht in Frameworks (Laravel, Symfony) und ORMs einbetten.
Installation
Installieren Sie es via Composer:
composer require dragonmantank/cron-expressionDies ist die grundlegende Bibliothek für die Arbeit mit Cron-Ausdrücken. Für einen vollwertigen Scheduler wird oft peppeocchi/php-cron-scheduler verwendet:
composer require peppeocchi/php-cron-schedulerHauptfunktionen
- Parsen von Cron-Ausdrücken — Prüfung, ob die aktuelle Zeit dem Muster entspricht (
* * * * *). - Multitasking — Ausführung mehrerer Aufgaben in einem Prozess.
- Parallelität — via
exec()oderpcntl_fork(). - Protokollierung — Ausgabe von stdout/stderr in eine Datei.
- Fehlerbehandlung — Wiederholungsversuche, Benachrichtigungen.
Codebeispiel
<?phprequire 'vendor/autoload.php';
use GO\\Scheduler;
$scheduler = new Scheduler();
// Aufgabe: jede Minute$scheduler->call(function() { echo "Ausgeführt um " . date('Y-m-d H:i:s') . "";})->everyMinute();
// Aufgabe: jede Stunde um 30 Minuten$scheduler->call('cleanup_logs')->at('30 * * * *');
// Aufgabe: an Werktagen um 9:00 Uhr$scheduler->exec('php artisan report:generate')->at('0 9 * * 1-5');
// Start aller bereiten Aufgaben$scheduler->run();Wann verwenden
Ein PHP-Task-Scheduler ist ideal für:
- das Versenden von E-Mail-Newslettern nach Zeitplan;
- das Bereinigen veralteter Daten (Logs, Sessions);
- das Generieren von Berichten außerhalb der Spitzenzeiten;
- die Synchronisation mit externen APIs (einmal pro Stunde);
- das Aktualisieren von Caches (alle 5 Minuten).
Ersetzen Sie nicht den systemeigenen Cron für kritische Systemoperationen (DB-Backup, Zertifikatserneuerung) — verwenden Sie ihn als zusätzliche Schicht für die Geschäftslogik.
Auch in der Bibliothek
SnapKit für Swift: Vollständiger Leitfaden mit Beispielen
Elasticsearch-Client für Go (Golang): Vollständige Anleitung zur Arbeit mit ES
Kotlinx.serialization und Valiktor: Datenvalidierung in Kotlin
Arbeiten mit YAML in TypeScript: Vollständiger Leitfaden zum Parsen und Serialisieren