Ini Dia Cara Mudah Menjalankan Cronjob Artisan Laravel

0
45


Ketika mengelola website, Anda tentu pernah harus melakukan suatu task berulang kali? Misalnya, rutin membersihkan cache ataupun melakukan backup secara berkala. Pengulangan ini tentu akan menyita banyak waktu berharga Anda, kan? 

Padahal, dengan menggunakan cronjob, kegiatan itu bisa dikerjakan dengan lebih efektif. Nah, bagi Anda pengguna Laravel, Anda dapat melakukan cron job dengan menggunakan laravel scheduler. Tapi, bagaimana cara melakukannya ya? 

Pada artikel kali ini, kami akan membahas cara menjalankan cronjob dengan Laravel scheduler. Yuk, langsung saja simak penjelasan lengkapnya!

Apa itu CronJob Laravel dan Kenapa Menggunakannya?

Cron Job atau biasa disebut cronjob merupakan sebutan penggunaan cron untuk menjadwalkan task secara otomatis pada waktu yang ditentukan. 

Dengan menggunakan cronjob, nantinya hanya dengan menjalankan script penjadwalan tertentu, sebuah task bisa dilakukan secara berulang pada server Anda. 

Bagi pengguna Laravel, penjadwalan cron job bisa dilakukan dengan laravel scheduler. Beberapa task pengelolaan website yang bisa dilakukan dengan penjadwalan, antara lain:

  • Menghapus cache untuk memaksimalkan ruang penyimpanan
  • Melakukan backup secara berkala 
  • Mengirimkan daily/weekly email
  • Melakukan pengecekan broken link terhadap konten situs website Anda 
  • Melakukan query penghapusan database secara teratur

Nah, ketika task di atas mampu dijalan secara otomatis dengan cronjob laravel, Anda tentu bisa bekerja dengan lebih mudah dan efektif. 

Langkah Menjalankan Cronjob dengan Laravel Scheduler

Inilah langkah menjalankan cronjob laravel yang dapat Anda coba :

  1. Membuat Laravel Schedule Task
  2. Setting Cronjob Laravel di cPanel
  3. Melakukan Testing Cronjob Laravel

Sebelum mengikuti langkah menggunakan laravel scheduler, pastikan instalasi laravel di cPanel hosting sudah dilakukan. 

Baca Juga : Cara Upload Laravel ke Hosting

 Jika laravel sudah terinstall, Anda dapat langsung mengikuti langkah-langkah dibawah ini untuk menjalankan Cronjob di Laravel :

1. Membuat Laravel Schedule Task

Pada tahap ini, Anda akan membuat script penjadwalan pada method schedule()yang ada pada file kernel.php di Laravel. 

Silahkan buka direktori app/Console, kemudian klik kernel.php untuk mengedit file. Selanjutnya, Anda dapat mengetikkan script penjadwalan pada file tersebut.

protected function schedule(Schedule $schedule)
    {
        // Masukkan Kode Anda Disini
        $schedule->call(function () {
            
        //Pengecekan apakah cronjob berhasil atau tidak
	//Mencatat info log 
            Log::info('Cronjob berhasil dijalankan');
        })->everyTwoMinutes();
    
    }

Sebagai contoh, kami membuat kode untuk melakukan pengecekan keberhasilan cronjob. 

Baris kode Log::info akan menampilkan informasi berhasil atau tidaknya cron yang telah dibuat. Info ini nantinya dapat dilihat pada laravel.log. 

Jangan lupa untuk menambahkan kode berikut di bagian atas file kernel.php jika Anda menggunakan Log dalam kode Anda.

use IlluminateSupportFacadesLog;

Informasi everyTwoMinutes() menunjukkan bahwa penjadwalan dilakukan setiap 2 menit.

Anda dapat menyesuaikan frekuensi waktu cron sesuai dengan kebutuhan. Laravel scheduler memiliki banyak opsi waktu penjadwalan, beberapa diantaranya :

Method Deskripsi
->cron(‘* * * * *’); Menjalankan task dengan waktu khusus yang spesifik
->hourly(); Menjalankan task setiap 1 jam
->hourlyAt(17); Menjalankan task setiap pukul 17:00
->everyTwoHours(); Menjalankan task setiap 2 jam
->twiceDaily(1, 13); Menjalankan task 2 kali sehari, pada pukul 1:00 dan 13:00
->lastDayOfMonth(’15:00′); Menjalankan task setiap hari terkahir dalam sebulan pada pukul 15:00
->yearlyOn(6, 1, ’17:00′); Menjalankan task setiap tahun pada 1 Juni pukul 17:00

Pengaturan frekuensi waktu penjadwalan lainnya dapat dipelajari secara lengkap pada dokumentasi laravel task scheduler

2. Menjalankan Cronjob Laravel

Anda dapat menjalankan cronjob laravel dengan 2 cara, yaitu dengan setting cronjob melalui cPanel atau setting cronjob melalui SSH.

2.1. Setting Cronjob melalui SSH

Jika paket hosting Anda mendukung fitur SSH, Anda juga dapat menjalankan cronjob laravel dengan langkah berikut ini :

1. Buka terminal, masuk ke direktori projek Anda dan jalankan command

crontab -e

2. Command tersebut akan membuka file crontab, paste kode dibawah ini, lalu simpan file.

* * * * * /usr/local/bin/php /path_laravel/artisan schedule:run >> /dev/null 2>&1

* * * * * akan melakukan pengecekan cronjob secara otomatis pada setiap menit. Namun, script penjadwalan hanya akan dieksekusi sesuai waktu yang diatur pada script penjadwalan. Misal, jika pada script ditulis hourly(), maka script tetap akan dieksekusi tiap 1 jam sekali.

3. Jika cronjob berhasil disimpan, maka akan muncul seperti ini.

2.2. Setting Cronjob melalui cPanel

Jika paket hosting yang Anda pilih belum mendukung fitur SSH, seperti Paket Bayi dan Paket Pelajar Niagahoster, pengaturan cron job melalui cPanel adalah pilihan yang tepat. 

Caranya, masuklah ke cPanel hosting Anda, lalu masuk ke menu Advanced, kemudian klik fitur Cron Jobs. Anda juga dapat menggunakan fitur pencarian yang ada pada bagian kanan atas layar untuk melakukan pencarian fitur cron job. 

fitur cronjob di cpanel

Pada halaman Common Setting, lakukan pengaturan jadwal cron sesuai dengan kebutuhan. Anda juga bisa memiliki dari beberapa setting yang sudah tersedia agar lebih mudah. 

Kemudian, masukkan command yang ingin dijalankan pada kolom isian Command dengan format sebagai berikut : 

cronjob cpanel

Pada contoh di atas, kami menggunakan pengaturan cronjob setiap menit. 

Lalu, apa bedanya waktu pada script php dan waktu di common setting?

Waktu pada common setting adalah waktu cronjob untuk menjalankan command yang ditulis pada kolom command. Sedangkan, waktu pada script adalah waktu untuk eksekusi kode penjadwalan. 

Sebagai contoh, pada langkah pertama kita membuat kode dengan frekuensi waktu everyTwoMinutes(). Nah, walaupun pada common setting diatur untuk menjalankan cronjob pada setiap menit, tapi eksekusi script penjadwalan tetap akan dilakukan tiap 2 menit sekali. 

Namun, ada pengecualian. Kalau pada script yang dibuat tidak memakai waktu penjadwalan, maka script akan dieksekusi sesuai waktu cronjob di common setting.

Oleh karena itu, kami sarankan jika Anda sudah mengatur waktu penjadwalan di script kernel.php, atur waktu di cPanel dengan Once Per Minute saja. Hal ini akan memudahkan Anda ketika Anda memiliki banyak kode penjadwalan dengan waktu yang beragam dalam script php Anda. 

Namun, jika Anda belum mengatur waktu penjadwalan di script php, Anda dapat mengatur waktu langsung di cPanel.  

Pada dasarnya, syntax pada kolom command akan menjalankan command schedule:run pada php artisan. 

Syntax >> /dev/null 2>&1 berarti bahwa standard output akan diarahkan ke /dev/null yang artinya diabaikan. Namun, jika Anda ingin menyimpan log cron job secara terpisah, Anda dapat membuat file baru dan mengubah syntax /dev/null menjadi path lokasi file output cron.  

Misal lokasi file output ada pada /path_laravel/cron.log, maka command menjadi :

/usr/local/bin/php /path_laravel/artisan schedule:run >> /path_laravel/cron.log 2>&1

Jangan lupa untuk mengganti /path_laravel/ pada kolom isian command dengan lokasi file laravel Anda.

Jika sudah selesai melakukan pengaturan, klik tombol Add New Cron Job.

3. Melakukan Test Cronjob Laravel

Untuk memastikan apakah cron job sudah berjalan dengan baik, Anda dapat melakukan test dengan mencatat info logging sesuai script pada langkah pertama.

Anda dapat mencari dan membuka file laravel.log. Jika informasi yang muncul seperti di bawah ini, maka cronjob telah berhasil dijalankan.

testing cron

Anda dapat melanjutkannya dengan menambahkan script penjadwalan lainnya jika membutuhkannya. 

Bagaimana Jika Cronjob Tidak Berhasil Dijalankan?

Jika cronjob Laravel tidak berhasil dijalankan, Anda dapat melakukan edit cron job seperti pada gambar di bawah ini. 

command cronjob error

Anda harus menuliskan versi PHP yang Anda gunakan secara spesifik.  Misalnya jika Anda memakai PHP versi 8, Anda harus menuliskan command :

/usr/local/bin/ea-php8 /path_laravel/artisan schedule:run >> /dev/null 2>&1
command cronjob

Jangan lupa klik Edit Line agar perubahan yang dilakukan dapat tersimpan.

Kesimpulan 

Bagaimana, cukup mudah bukan cara menjalankan cron job Laravel? Dengan langkah tersebut, mengelola website bisa lebih efektif karena cukup membuat script sekali saja dan task dapat dilakukan otomatis sesuai jadwal. 

Menjalankan cronjob Laravel dapat dilakukan dengan melakukan setting melalui akses SSH ataupun langsung melakukan setting di cPanel. 

Bagi pengguna Niagahoster, Anda bisa menggunakan setting cronjob melalui SSH jika memilih paket Personal dan Bisnis. Sedangkan untuk pengguna paket Bayi dan Pelajar, Anda bisa menggunakan setting melalui cPanel.

Semoga informasi yang kami sampaikan bermanfaat, ya? Saatnya Anda memanfaatkan cronjob untuk dapat mengelola website dengan lebih baik. 



Sumber

LEAVE A REPLY

Please enter your comment!
Please enter your name here