Membuat Cronjob Laravel

Membuat Cronjob di cPanel dengan Laravel Task Scheduling

Pada tutorial kali ini kita akan membahas Cara Membuat Cronjob di cPanel dengan Laravel Task Scheduling.

Cron jobs memungkinkan Anda mengotomatisasi perintah dalam waktu tertentu, mungkin setiap minggu, setiap hari atau setiap jam sesuai yang Anda butuhkan.

Misalnya, melakukan backup file setiap pukul 00.00 malam hari, melakukan download file atau mengirim email setiap periode tertentu. Sehingga Anda tidak perlu repot untuk menjalankan perintah- perintah tersebut secara manual satu persatu.

Langsung saja Cara Membuat Cronjob di cPanel dengan Laravel Task Scheduling, langkah nya sebagai berikut :

1 . Buat command pada laravel menggunakan perintah berikut (pastikan perintah di ketikan di dalam folder project laravel kita)

php artisan make:command CronTes

2. Maka laravel akan membuat file CronTes.php pada /app/Console/Commands/

3. Setelah itu, buka /app/Console/Commands/CronTes.php

4. Isikan nama command di bagian signature. Nama command ini akan muncul di list php artisan. dan jangan lupa untuk mengisi description yang mendeskripsikan command tersebut

protected $signature = 'cron:log';
protected $description = 'Membuat log, yang memastikan command jalan';

5. Setelah itu simpan, maka command cron:logakan masuk ke list perintah php artisan. Coba jalankan perintah php artisan list pada terminal untuk melihat.

Membuat Cronjob Laravel
Membuat Cronjob Laravel

6. Masukkan script yang akan dieksekusi di function handle(). Contoh seperti berikut membuat log ketika command dijalankan.

public function handle()
{
   \Log::info("Cron is working fine!");
}

Berikut adalah Full Code nya:

class CronTes extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'cron:log';
    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Membuat log, yang memastikan command jalan';
    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }
    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        \Log::info("Cron is working fine!");
    }
}

7. Lalu coba jalankan perintah cron:log pada artisan

Membuat Cronjob Laravel
Membuat Cronjob Laravel

8. Untuk memastikan apakah command berjalan, lihat log laravel (karena di case ini perintah yang di eksekusi ketika command berjalan adalah membuat log. Perhatikan point 6.)

Membuat Cronjob Laravel
Membuat Cronjob Laravel

9. Jika sudah muncul di log, berarti command yang dibuat sudah berjalan dengan benar.

10. Langkah selanjutnya yaitu menambahkan command ke schedule laravel.
Buka file App/Console/Kernel.php

Lalu tambahkan command di function schedule

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

Perintah everyMinute() bisa di ganti sesuai kebutuhan, lihat dokumentasi di Laravel-Task-Scheduling

10. Selanjutnya adalah memasukkan command ke cronjob di cPanel untuk menjalankan schedule.
Buka cPanel->Advanced->Cron Jobs

Membuat Cronjob Laravel
Membuat Cronjob Laravel

11. Lalu Add New Cron Job, pada Common Settings pilih Once Per Minute(* * * * *)

12. Dibagian command masukkan perintah berikut:

/usr/local/bin/ea-php71 artisan schedule:run >> /dev/null 2>&1
Membuat Cronjob Laravel
Membuat Cronjob Laravel

Pada perintah di atas, saya menggunakan /usr/local/bin/ea-php71, dikarenakan di laravel yang terinstall di cPanel support php 7.1 keatas.

13. Terakhir, klik Add new Cron Job. Selesai

Hasilnya, Server akan menjalankan cron job yang mencatat Log setiap menitnya.

Membuat Cronjob Laravel
Membuat Cronjob Laravel

Android Programmer dan Author di Ayongoding.com

5 Komentar

Leave a Reply

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