- Einfache Automatisierungen mit Cronjobs und Laravel - 29. August 2025
- Die wichtigsten Moodle API-Schnittstellen für Nutzerverwaltung - 1. August 2025
- Neues Projekt als GitLab-Projekt initialisieren – schnell, sauber, reproduzierbar - 24. Juli 2025
Definiere deine Jobs im Laravel-Scheduler und lasse einen System-Cron jede Minute php artisan schedule:run
ausführen. Den Rest übernimmt Laravel – inkl. Taktung, Überlappungsschutz und Cluster-Locking.
Warum Cron + Laravel-Scheduler?
- Ein Cron-Eintrag für alles: Statt zig einzelne Cronjobs zu pflegen, erledigt Laravel die Aufgaben zentral. Du brauchst auf dem Server nur einen Cron, der minütlich den Scheduler triggert.
- Mehr Komfort: Lesbare Intervalle (
->dailyAt('06:30')
,->weeklyOn(1, '08:00')
) oder frei per->cron('...')
.
Schritt 1: Ein kleines Ziel definieren
Beispiel: Täglicher Report als E-Mail oder Logeintrag.
php artisan make:command SendDailyReport
app/Console/Commands/SendDailyReport.php
:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
class SendDailyReport extends Command
{
protected $signature = 'report:send';
protected $description = 'Sendet den täglichen Report';
public function handle(): int
{
// Hier deine Business-Logik (Mail, Export, API, ...)
Log::info('Daily report sent at '.now()->toDateTimeString());
return self::SUCCESS;
}
}
Schritt 2: Im Laravel-Scheduler einplanen
Ab Laravel 11/12 wird Scheduling typischerweise in routes/console.php
definiert (ältere Projekte nutzen oft app/Console/Kernel.php
). Beide Wege funktionieren. laravel.com
routes/console.php
:
<?php
use Illuminate\Support\Facades\Schedule;
// Täglich um 06:30 Uhr (Serverzeit)
Schedule::command('report:send')->dailyAt('06:30');
Pro-Tipps:
->timezone('Europe/Berlin')
setzen, wenn die Ausführungszeit an die lokale Zeit gekoppelt sein soll (z. B. operatives Reporting).->runInBackground()
für Prozesse, die Output nicht in die Konsole schreiben müssen.
Schritt 3: System-Cron einmalig einrichten
Ubuntu/Debian (als Root):
sudo crontab -e
Dann einen Eintrag hinzufügen (Pfad anpassen!):
* * * * * cd /var/www/app && php artisan schedule:run
Praxisbeispiele (Copy-&-Paste)
1) Wöchentlich montags 08:00 Uhr:
Schedule::command('report:send')->weeklyOn(1, '08:00');
2) Alle 15 Minuten, nur in Production:
Schedule::command('invoices:sync')
->everyFifteenMinutes()
->when(fn() => app()->isProduction());
3) Eigene Shell-Skripte via Scheduler:
Schedule::exec('/usr/local/bin/backup.sh')->dailyAt('02:30');
4) Mit fester Zeitzone (Ausführung 06:30 Berlin-Zeit):
Schedule::command('report:send')
->dailyAt('06:30')
->timezone('Europe/Berlin');
Cron-Cheatsheet (mini)
* * * * *
= minütlich0 * * * *
= stündlich zur vollen Stunde0 6 * * *
= täglich 06:000 8 * * 1
= montags 08:00*/5 * * * *
= alle 5 Minuten
Fazit
Mit einem Cron-Eintrag und dem Laravel-Scheduler automatisierst du Reports, Syncs, Aufräum-Jobs & Co. zuverlässig – lesbar im Code und problemlos clusterfähig. Wenn du’s möglichst schlank halten willst: einen Cron pro Projekt, der minütlich schedule:run
ausführt – fertig.
Wenn du Fragen zur Einrichtung des Laravel-Schedulers hast oder Unterstützung bei der Umsetzung deiner Automatisierungen mit Cronjobs brauchst, schau gerne auf unserer Website vorbei oder nimm direkt Kontakt mit uns auf – wir helfen dir dabei, deine Abläufe zuverlässig, skalierbar und übersichtlich zu gestalten. Bei weiteren programmiertechnischen Fragen wirf auch einen Blick auf unsere anderen Artikel – vielleicht ist genau das Thema dabei, das dich bei deinem nächsten Projekt weiterbringt.