Butuh menjalankan tugas otomatis โ mengirim email pengingat, membersihkan data lama, atau mem-publish artikel terjadwal? Laravel punya Task Scheduler yang membuat penjadwalan jadi rapi dalam satu file, tanpa membuat banyak cron job terpisah di server. Artikel ini menjelaskan cara memakainya dari nol.
Konsep: Satu Cron untuk Semua
Alih-alih menambah banyak entri cron di server, Laravel cukup butuh satu cron yang memanggil schedule:run tiap menit. Sisanya diatur di dalam kode Laravel.
Langkah 1: Definisikan Jadwal
Buka app/Console/Kernel.php (Laravel 10 ke bawah) dan tulis jadwal di method schedule():
protected function schedule(Schedule $schedule)
{
// contoh: bersihkan log tiap hari jam 1 pagi
$schedule->command('log:clear')->dailyAt('01:00');
// contoh: jalankan closure tiap jam
$schedule->call(function () {
// logika Anda di sini
})->hourly();
}
Beberapa frekuensi yang sering dipakai: ->everyMinute(), ->hourly(), ->daily(), ->dailyAt('13:00'), ->weekly(), ->cron('0 */2 * * *') untuk pola kustom.
Langkah 2: Uji di Lokal
Jalankan manual untuk memastikan jadwal Anda benar:
php artisan schedule:run
Perintah ini akan menjalankan semua task yang waktunya sudah tiba. Untuk melihat daftar jadwal terdaftar:
php artisan schedule:list
Langkah 3: Pasang Cron di Server
Agar berjalan otomatis, tambahkan satu cron job di server. Buka crontab:
crontab -e
Lalu tambahkan baris berikut (sesuaikan path project):
* * * * * cd /var/www/laravel_app && php artisan schedule:run >> /dev/null 2>&1
Setting Cron di cPanel
Di shared hosting cPanel, buka menu Cron Jobs, pilih interval "Once per minute", lalu isi command dengan path PHP dan project Anda:
/usr/local/bin/php /home/user/laravel_app/artisan schedule:run >> /dev/null 2>&1
Contoh Nyata: Auto-Publish Konten Terjadwal
Task Scheduler cocok untuk mem-publish artikel yang sudah disiapkan sebagai draft pada tanggal tertentu. Misalnya, sebuah command yang mengubah status artikel menjadi publish saat waktunya tiba, dijalankan ->daily(). Dengan pola ini, Anda bisa menyiapkan konten sebulan penuh dan membiarkannya terbit otomatis.
Kesimpulan
Task Scheduler membuat penjadwalan di Laravel jadi terpusat dan mudah dirawat: definisikan jadwal di kode, lalu pasang satu cron schedule:run di server. Setelah itu, tugas apa pun โ dari kirim email sampai auto-publish konten โ bisa berjalan otomatis. Untuk deployment servernya, lihat panduan kami tentang cara deploy Laravel ke VPS Ubuntu dengan Nginx.