Penjadwalan Task Otomatis Menggunakan Laravel Scheduler

Hallo, Kreatif Readers! Sebagai strategi dalam menghemat waktu dan tenaga, fitur Laravel Scheduler merupakan salah satu tools yang efektif dalam otomatisasi proses development. Fitur ini biasa digunakan untuk pembersihan cache serta melakukan backup website secara berkala. Selain itu, beberapa fungsi lain seperti sinkronisasi data eksternal serta pengiriman email berkala juga memungkinkan dilakukan menggunakan Laravel Scheduler.

Apa itu Laravel Scheduler?

Mengutip dari situs resmi Laravel, Task Scheduler merupakan salah satu fitur dari framework Laravel yang memungkinkan untuk menjalankan tugas secara otomatis pada waktu tertentu. Umumnya fitur ini diterapkan task yang harus dijalankan secara rutin dan berulang, sehingga tidak perlu lagi dijalankan secara manual.

Mengapa harus Laravel Scheduler?

Beberapa manfaat utama menggunakan Laravel Scheduler adalah:

  1. Pengaturan yang mudah: Anda dapat mendefinisikan task terjadwal hanya dengan beberapa baris code.
  2. Pembuatan Task yang Lebih Mudah: Laravel menyediakan berbagai metode untuk menjadwalkan tugas seperti menjalankan artisan command, menjalankan closure, atau bahkan menjalankan system command
  3. Pengaturan Frekuensi yang Fleksibel: Anda dapat dengan mudah mengatur frekuensi tugas seperti setiap menit, setiap jam, harian, mingguan, dan seterusnya.
  4. Logging dan Monitoring: Laravel Scheduler memungkinkan logging dan monitoring dari tugas yang dijalankan, sehingga Anda dapat memastikan semua tugas berjalan sesuai rencana.

Contoh penggunaan Laravel Scheduler

Berikut merupakan contoh penggunaan Laravel Scheduler untuk melakukan backup database setiap minggu/weekly.

1. Buat command untuk Backup

php artisan make:command BackupDatabase

2. Mendifinisikan logic Backup di command

Buka file BackupDatabase.php dan edit metode handle:

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;

class BackupDatabase extends Command
{
 protected $signature = 'backup:database';
 protected $description = 'Backup the database';

 public function __construct()
 {
 parent::__construct();
 }

 public function handle()
 {
 $filename = "backup-" . now()->format('Y-m-d-H-i-s') . ".sql";
 $command = "mysqldump --user=" . env('DB_USERNAME') .
 " --password=" . env('DB_PASSWORD') .
 " --host=" . env('DB_HOST') .
 " " . env('DB_DATABASE') . " > " . storage_path('app/' . $filename);

 $returnVar = NULL;
 $output = NULL;

 exec($command, $output, $returnVar);

 if ($returnVar != 0) {
 $this->error('Database backup failed');
 } else {
 $this->info('Database backup was successful');
 }
 }
}

3. Definisikan jadwal Backup

Setelah membuat command, Anda perlu menjadwalkannya di app/Console/Kernel.php. Tambahkan tugas ini ke metode schedule untuk menjalankannya setiap minggu.

protected function schedule(Schedule $schedule)
{
 $schedule->command('backup:database')->weekly();
}

Selain itu, Anda juga dapat menentukan waktu tertentu untuk menjalankan backup, contohnya setiap hari Senin pukul 02.00

protected function schedule(Schedule $schedule)
{
 $schedule->command('backup:database')->weeklyOn(1, '02:00'); // Setiap Senin jam 02:00
}

Anda dapat melakukan test untuk menjalankan scheduler menggunakan perintah berikut

php artisan schedule:work

4. Jalankan Laravel Scheduler pada server

Untuk menjalankan scheduler, Anda hanya perlu menambahkan cron configuration pada server untuk menjalankan perintah the schedule:run pada waktu yang ditentukan. Berikut adalah syntax yang dibutuhkan

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

5. Verifikasi Laravel Scheduler dengan melakukan Logging dan Monitoring

Berikut adalah perintah untuk melihat daftar semua tugas yang telah dijadwalkan di Laravel Scheduler

php artisan schedule:list

Tedapat beberapa variable yang akan ditampilkan, antara lain:

  • Expression: Menunjukkan ekspresi cron untuk tugas tersebut.
  • Command: Perintah yang dijalankan.
  • Next Due: Waktu berikutnya tugas dijadwalkan untuk dijalankan.
  • Previous: Waktu sebelumnya tugas dijalankan.
  • Description: Deskripsi singkat tentang tugas.

Selain perintah di atas, Laravel Scheduler juga memungkinkan Anda untuk memonitor dan log setiap tugas yang dijalankan. Anda dapat menggunakan metode ->sendOutputTo untuk mengarahkan output ke file log menggunakan perintah berikut:

$schedule->command('backup:run')->daily()->sendOutputTo(storage_path('logs/backup.log'));

Kesimpulan

Laravel Scheduler adalah alat yang sangat berguna untuk mengotomatisasi berbagai tugas dalam aplikasi web Anda. Dengan menggunakan Laravel Scheduler, Anda dapat mengelola tugas terjadwal dengan cara yang lebih terstruktur dan mudah dipahami, meningkatkan produktivitas dan efisiensi pengembangan aplikasi Anda. Mengingat kemudahan pengaturannya, fleksibilitas, dan fitur logging yang disediakan, Scheduler menjadi salah satu fitur esensial yang layak dipelajari dan digunakan dalam proyek Laravel.

Reference:
[1] https://laravel.com/docs/11.x/scheduling
[2] Cara Menjalankan Laravel Scheduler untuk Otomatisasi Cron Job (idwebhost.com)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>