HOTLINE

(0275) 2974 127

CHAT WA 24/7
0859-60000-390 (Sales)
0852-8969-9009 (Support)
Blog

Cara Menjalankan Cronjob Laravel

Apa itu CronJob Laravel?

CronJob merupakan fitur yang ada pada OS Linux dengan fungsi untuk menjalankan script atau 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. Cron ini cocok untuk eksekusi pekerjaan yang dilakukan secara berulang misal backup data, monitor server, download, upload, kirim pesan dan lainnya.

Fungsi CronJob

Berikut ini adalah beberapa kasus penggunaan cron job yang relevan di bidang pengembangan website :

  • Jika memiliki website dengan membership, dimana sebuah akun memiliki tanggal kadaluwarsa dapat menjadwalkan cron untuk secara rutin menonaktifkan atau menghapus akun yang melewati tanggal kadaluwarsa.
  • Dapat mengirimkan bulletin harian.
  • Jika memiliki table ringkasan, dalam database, bisa secara teratur dengan cron ob. Misalnya, dapat menyimpan setiap klik halaman website dalam sebuah table.
  • Dapat menghapus file data yang ada di cache dalam interval waktu tertentu.
  • Dapat secara otomatis memeriksa konten situs website dari link yang rusak dan mengirim laporan lewat email kepada diri sendiri secara berkala.
  • Dapat menjadwalkan tugas yang sudah berjalan lama untuk dijalankan dari script perintah, dari pada menjalankannya dari skrip website.
  • Jika adalah seorang social media marketing specialist, cron job adalah hal yang sangat sempurna. Bisa mengambil tweet terbaru untuk di cache dalam file teks.

Cara Menjalankan Cronjob dengan Laravel Scheduler

Inilah langkah menjalankan cronjob laravel yang dapat dicoba, yaitu :

  • Membuat Laravel Schedule Task.
  • Setting Cronjob Laravel di cPanel.
  • Melakukan Testing Cronjob Laravel.

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

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

1. Membuat Laravel Schedule Task

Pada tahap ini 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, 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 disini akan 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 menggunakan Log dalam kode.

use Illuminate\Support\Facades\Log;

Informasi everyTwoMinutes() menunjukkan bahwa penjadwalan dilakukan setiap 2 menit. 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

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

  • Setting Cronjob melalui SSH

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

    • Buka terminal, masuk ke direktori projek dan jalankan command
crontab -e
    • 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.

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

  • Setting Cronjob melalui cPanel

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

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

Pada halaman Common Setting, lakukan pengaturan jadwal cron sesuai dengan kebutuhan. Selain itu 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 :

Pada contoh di atas 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 membuat kode dengan frekuensi waktu everyTwoMinutes(). 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 disarankan jika sudah mengatur waktu penjadwalan di script kernel.php, atur waktu di cPanel dengan Once Per Minute saja. Hal ini akan memudahkan ketika memiliki banyak kode penjadwalan dengan waktu yang beragam dalam script php.

Namun, jika belum mengatur waktu penjadwalan di script php 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 ingin menyimpan log cron job secara terpisah 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. 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, dapat melakukan test dengan mencatat info logging sesuai script pada langkah pertama.

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

Dapat melanjutkannya dengan menambahkan script penjadwalan lainnya jika membutuhkannya.

Bagaimana Jika Cronjob Tidak Berhasil Dijalankan?

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

Harus menuliskan versi PHP yang digunakan secara spesifik. Misalnya jika memakai PHP versi 8, harus menuliskan command :

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

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

5/5 - (2 votes)
Risa Y

Recent Posts

Mengenal Manfaat GPN Dari Filosofi Logonya!

Apakah Anda menggunakan kartu ATM atau kartu debit? Suka bertransaksi secara cashless? Sepertinya Anda perlu…

17 hours ago

Ingin Membuat Website E-Commerce Yang Menarik? Perhatikan Tips Ini

Design website toko online tidak hanya soal estetika, tapi juga UX yang bagus secara keseluruhan.…

2 days ago

Apa Saja Jenis Proyek yang Bisa Dikerjakan UX Designer? Yuk Simak Di Sini

Sebelum memulai karir Anda sebagai desainer UX, Anda harus membuat portofolio yang mencakup semua pengalaman…

3 days ago

Aktifkan Keep-Alive Untuk Meningkatkan Performa Website Anda

Keep-Alive memungkinkan browser pengunjung Anda mendownload semua konten (JavaScript, CSS, gambar, video, dll) melalui koneksi…

4 days ago

Baca Ini Untuk Pelajari Apa Saja Job Description Web Developer

Job description seorang web developer adalah membuat situs web menggunakan berbagai bahasa pemrograman. Tanggung jawab…

5 days ago

Rekomendasi Tools A/B Testing untuk Meningkatkan Conversion Rate

Secara default, WordPress tidak mendukung A/B testing. Tapi jangan khawatir. Di bawah ini, kami telah…

6 days ago