Setting Cron Job Laravel

Alfajri
2 min readJun 24, 2024

--

Photo by Ocean Ng on Unsplash

Laravel memiliki fitur penjadwalan untuk dapat mengeksekusi fungsi tertentu, seperti hapus database secara berkala atau yang sebagainya. Langkahnya adalah membuat sebuah command yang caranya dapat kamu lihat di sini ( Artisan Console — Laravel 11.x — The PHP Framework For Web Artisans ).

Fokus blog ini adalah implementasinya pada VPS panel kamu, disini saya menggunakan Cyberpanel sebagai panel VPS saya.

Contohnya kita punya command untuk menghapus data notifikasi berkala dengan kode berikut

class DeleteNotificationData extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'cleanup:notification-data';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Menghapus data notifikasi 1 minggu yg lalu';

/**
* Execute the console command.
*/
public function handle()
{
Notification::where('created_at', '<', now()->subWeek())->delete();
Log::info('hapus notifikasi');
}
}

Lalu kita daftarkan command tersebut kepenjadwalan laravel di console.php

Schedule::command('cleanup:notification-data')->weekly();

Banyak tutorial yang menggunakan akan menggunakan script ini untuk diatur pada cyberpanel

* * * * * cd /home/learning.id/public_html && php artisan schedule:run >> /dev/null 2>&1

Script diatas bekerja dengan cara mengeksekui php artisan schedule:run setiap menit ( * * * * * ). laravel akan cek apakah command yang didaftarkan pada console.php akan dieksekusi sesuai rentang waktu tertentu.

Fokusnya adalah php artisan schedule:run akan dieksekusi setiap menitnyaa.

Daripada memanggil schedule:run setiap menitnya, lebih baik kita langsung saja panggil command sesuai penjadwalan cron jobnya seberti kode dibawah

0 0 * * 0 cd /home/learning.id/public_html && php artisan cleanup:notification-data

Kode diatas akan mengekseksui command php artisan cleanup:notification-data mingguan/weekly ( 0 0 * * 0), ini lebih efektif karena command akan dieksekusi pada waktu tertentu yang dijadwalkan langsung oleh Cyberpanel. Tidak perlu mengeksekusi php schedule:run setiap menitnya

--

--

Alfajri
Alfajri

Written by Alfajri

Halo saya feri, tertarik pada teknologi dan seni. Ingin berbagi cerita dan pengalaman serta mencoba belajar menulis

No responses yet