PHP-Aufgabenplaner: Vollständige Anleitung zu Cron-Jobs und Task Scheduler

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

PHP-Aufgabenplaner: Vollständige Anleitung



Der Aufgabenplaner (Task Scheduler) ist ein kritisches Werkzeug für jede Webanwendung, die auf PHP läuft. Er ermöglicht die Automatisierung von Routineoperationen: Versand von E-Mail-Newslettern, Cache-Bereinigung, Berichtserstellung, Datensynchronisation mit externen APIs und vieles mehr. Im Gegensatz zum manuellen Starten von Skripten gewährleistet der Planer eine zeitnahe und zuverlässige Ausführung von Aufgaben ohne Administratorbeteiligung.



Grundlegende Ansätze zur Implementierung eines Planers in PHP



Es gibt zwei Hauptmethoden zur Implementierung eines Aufgabenplaners in PHP-Projekten:



  • System-Cron (Linux/Unix) — Verwendung des integrierten Cron-Daemons zum zeitgesteuerten Aufruf von PHP-Skripten.
  • Benutzerdefinierter Planer (Task Scheduler) — Implementierung der Planungslogik direkt im PHP-Code unter Verwendung von Schleifen und Zeitprüfungen.


1. System-Cron mit PHP



Der gängigste und leistungsfähigste Ansatz. Sie erstellen ein PHP-Skript, das die gewünschten Aktionen ausführt, und fügen dann einen Eintrag zur Crontab des Servers hinzu.



Beispiel eines PHP-Skripts für Cron (cron_job.php):



<?php// cron_job.php - führt die Bereinigung veralteter Sitzungen durchrequire_once 'config.php';require_once 'db.php';

$stmt = $pdo->prepare("DELETE FROM sessions WHERE last_activity < NOW() - INTERVAL 1 DAY");$stmt->execute();

// Protokollierung der Ausführungfile_put_contents('logs/cron.log', date('Y-m-d H:i:s') . " - Sitzungen bereinigt", FILE_APPEND);?>


Eintrag in der Crontab (stündliche Ausführung):



0 * * * * /usr/bin/php /var/www/html/cron_job.php


2. Benutzerdefinierter Task Scheduler in PHP



Wenn Sie keinen Zugriff auf den System-Cron haben (z. B. bei Shared-Hosting), können Sie einen Planer direkt in PHP implementieren. Dazu wird ein spezielles Skript verwendet, das bei jedem Seitenbesuch oder über eine HTTP-Anfrage gestartet wird.



Beispiel eines einfachen Planers (task_scheduler.php):



<?phpclass TaskScheduler {    private $tasks = [];    private $lastRunFile = 'last_run.json';

public function addTask($name, callable $callback, $interval) { $this->tasks[] = [ 'name' => $name, 'callback' => $callback, 'interval' => $interval // in Sekunden ]; }

public function run() { $lastRun = $this->getLastRunTimes();

foreach ($this->tasks as $task) { $lastTime = $lastRun[$task['name']] ?? 0; if (time() - $lastTime >= $task['interval']) { echo "Führe Aufgabe aus: {$task['name']}"; call_user_func($task['callback']); $lastRun[$task['name']] = time(); } }

file_put_contents($this->lastRunFile, json_encode($lastRun)); }

private function getLastRunTimes() { if (file_exists($this->lastRunFile)) { return json_decode(file_get_contents($this->lastRunFile), true); } return []; }}

// Verwendung$scheduler = new TaskScheduler();

$scheduler->addTask('send_newsletter', function() { // Logik zum Versand des Newsletters echo "Newsletter versendet";}, 3600); // Jede Stunde

$scheduler->addTask('clean_cache', function() { // Cache-Bereinigung array_map('unlink', glob('cache/*.cache')); echo "Cache bereinigt";}, 86400); // Einmal täglich

$scheduler->run();?>


3. Erweiterter Planer mit Unterstützung für CRON-Ausdrücke



Für eine flexiblere Zeitplanverwaltung kann die Unterstützung klassischer Cron-Ausdrücke (Minute, Stunde, Tag, Monat, Wochentag) implementiert werden.



Beispiel eines Parsers für Cron-Ausdrücke:



<?phpclass CronPar                    

Empfehlungen