Tutorial Schedule Laravel 9


Tutorial Schedule Laravel 9

Halo teman-teman semuanya, pada kesempatan kali ini kita semua akan belajar Schedule di Laravel 9.

Laravel scheduler adalah fitur yang memungkinkan kita untuk membuat berbagai perintah dengan kode php dan menjadwalkannya sesuai kebutuhan. Dalam pengerjaannya, Laravel masih membutuhkan Cron agar bisa menjalankan *scheduler-*nya.

Apa itu Cron Job ? Crob Job merupakan penjadwalan pekerjaan berbasis waktu pada suatu sistem operasi. Cron Job dapat melakukan perintah secara otomatis dengan pengaturan oleh kita dalam bentuk script. Kita dapat mengatur perintah apa yang hendak dijalankan dan kapan perintah itu harus dijalankan. Pastinya sangat membantu bukan? Nah, salah satu penunjang Cron Job ini dapat digunakan dengan Task Scheduling pada LARAVEL.

Sebelum Mengikuti Tutorial ini, disarankan mengikuti Tutorial

atau bisa clone dari github

Oke tanpa lama-lama kita lanjut aja😁

Langkah 1 - Menjalankan Project Laravel

Silahkan jalankan perintah berikut ini di dalam terminal/CMD :

cd Laravel-logs

Perintah cd di atas digunakan untuk melakukan navigasi ke dalam sebuah folder, dalam contoh di atas kita akan masuk ke dalam folder Laravel-logs, Setelah berhasil masuk ke dalam folder project Laravel, sekarang silahkan jalankan perintah berikut ini di dalam terminal/CMD :

php artisan serve

Jika perintah di atas berhasil dijalankan, maka project Laravel akan dijalankan pada port 8000 di dalam localhost. Kita bisa membukanya di dalam browser dengan http://localhost:8000 dan jika berhasil, maka hasilnya seperti berikut ini.

Langkah 2 - Membuat Command baru

Silahkan jalankan perintah berikut ini di dalam terminal/CMD :

php artisan make:command DemoCron --command=demo:cron

Note : DemoCron di atas bebas ganti sesuai kebutuhan ya

Jika berhasil maka akan dibuatkan 1 file Command baru di dalam app/Console/Commands/DemoCron.php dan kemudian silahkan masukkan kode berikut ini :

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class DemoCron extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'demo:cron';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        // Sample
        \Log::info("Cron job Berhasil di jalankan " . date('Y-m-d H:i:s'));

        // Kita bisa menyimpan logic disini
        // Contoh: Update data di database yang statusnya belum diproses selama 24 jam menjadi FAILED
        // $expired = Carbon::now()->subHour(24);
        // $transaction = Transaction::where('transaction_status', '=', 'PENDING')->where('created_at', '<=', $expired)->first();
        // $transaction->transaction_status = 'FAILED';
        // $transaction->save();
    }
}

di atas kita menambahkan Log::info supaya mengetahui apakah Cron nya Jalan atau tidak

Selanjutnya Mendaftarkan Command tersebut ke app/Console/Kernel.php

Pada langkah ini, kita perlu mendefinisikan perintah kita pada file Kernel.php dengan waktu ketika ingin menjalankan perintah kita seperti fungsi di bawah ini:

fungsi artinya
->everyMinute(); Jalankan tugas setiap menit
->everyFiveMinutes(); Jalankan tugas setiap 5 menit
->everyTenMinutes(); Jalankan tugas setiap 10 menit
->everyFifteenMinutes(); Jalankan tugas setiap 15 menit
->everyThirtyMinutes() Jalankan tugas setiap 30 menit
->hourly(); Jalankan tugas setiap jam
->hourlyAt(17); Jalankan tugas setiap jam pada 17 menit melewati jam
->everyTwoHours(); Jalankan tugas setiap 2 jam
->everyThreeHours(); Jalankan tugas setiap 3 jam
->everyFourHours(); Jalankan tugas setiap 4 jam
->everySixHours(); Jalankan tugas setiap 6 jam
->daily(); Jalankan tugas setiap hari di tengah malam
->dailyAt('13:00'); Jalankan tugas setiap hari pukul 13:00
->monthly(); Jalankan tugas pada hari pertama setiap bulan pada pukul 00:00
->yearly(); Jalankan tugas setiap tahun

Link Documentasi https://laravel.com/docs/9.x/scheduling

Silahkan teman-teman buka file app/Console/Kernel.php dan silahkan teman-teman tambahkan kode dibawah ini :

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected $commands = [
        Commands\DemoCron::class,
    ];

    protected function schedule(Schedule $schedule)
    {
        $schedule->command('demo:cron')
            ->everyMinute();
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__ . '/Commands');

        require base_path('routes/console.php');
    }
}

Di atas, kita protected $comment di dalammnya ada Command yang kita panggil,

setelah itu mendaftarkan ke function schedule di jalankan setiap menit

Note : demo:cron adalah signature yg ada di file DemoCron.php

Langkah 3 - Menjalankan Schedule

Silahkan jalankan perintah berikut ini di dalam terminal/CMD :

php artisan schedule:run

Jika perintah di atas berhasil dijalankan, Kita bisa membukanya di dalam browser dengan http://localhost:8000/log-viewers dan jika berhasil, maka hasilnya seperti berikut ini.

Sampai disini pembahasan Laravel scheduler / Task Scheduling, semoga bermanfaat,

Jika teman-teman ada pertanyaan, silahkan teman-teman bisa bertanya melalui kolom kementar dibawah, dengan menyertakan error, secreenshot, source code, dll.

Jika ada saran, atau ingin menawarkan kerjasama, silahkan teman-teman bisa mengirimkannya ke

email : alisadikinsyahrizal@gmail.com

wa : 089649532860

telegram : syahrizal_as

Ig : syahrizal_alisadikin


Syahrizal AS
Full-Stack Web Developer

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami