Menjalankan Laravel Queue di cPanel Menggunakan Cronjob
Laravel punya sistem queue yang sangat berguna untuk menjalankan proses di background, misalnya mengirim email, generate laporan, atau memproses upload besar. Biasanya, di server VPS kita bisa menggunakan Supervisor untuk menjaga queue worker tetap hidup. Tapi di shared hosting dengan cPanel, Supervisor tidak tersedia. Solusinya: gunakan cronjob.
1. Definisikan Queue Worker di Scheduler
Di app/Console/Kernel.php
, tambahkan perintah queue worker:
$schedule->command('queue:work --stop-when-empty')
->everyMinute()
->withoutOverlapping();
Penjelasan singkat:
queue:work
→ menjalankan queue worker.--stop-when-empty
→ worker berhenti setelah semua job selesai.everyMinute()
→ worker dijalankan setiap menit.withoutOverlapping()
→ mencegah duplikasi proses worker.
2. Tambahkan Cronjob di cPanel
Buka cPanel → Cron Jobs, lalu tambahkan salah satu perintah berikut (sesuai versi PHP yang digunakan di hosting Anda):
* * * * * /usr/local/bin/ea-php81 /home/{account_name}/live/artisan schedule:run
atau jika server Anda pakai PHP 8.4:
* * * * * /usr/local/bin/ea-php84 /home/{account_name}/live/artisan schedule:run
👉 Sesuaikan:
{account_name}
→ ganti dengan nama akun hosting Anda.live
→ ganti dengan name directory project Laravel.ea-php81
,ea-php82
,ea-php84
→ pilih sesuai versi PHP aktif di cPanel Anda.
3. Cara Kerjanya
- Cronjob menjalankan
php artisan schedule:run
setiap menit. - Laravel Scheduler memanggil queue worker (
queue:work --stop-when-empty
). - Semua job yang ada di queue diproses.
- Worker berhenti ketika queue kosong, lalu dipanggil ulang di cronjob berikutnya.
Dengan begitu, queue tetap berjalan tanpa butuh Supervisor.
4. Tips & Best Practice
-
Gunakan database driver untuk queue di shared hosting (karena Redis biasanya tidak tersedia):
QUEUE_CONNECTION=database
Lalu jalankan:
php artisan queue:table php artisan migrate
-
Jika punya lebih dari satu project Laravel di hosting yang sama, tambahkan cronjob terpisah untuk masing-masing project dengan jalur yang sesuai.
-
Untuk debugging:
php artisan queue:failed php artisan queue:retry {id}
Kesimpulan
Dengan memanfaatkan cronjob di cPanel, Laravel Queue bisa dijalankan secara otomatis setiap menit. Kuncinya ada di kombinasi:
queue:work --stop-when-empty
di scheduler- cronjob dengan ea-phpXX sesuai versi PHP hosting
Solusi ini ringan, aman, dan sangat cocok untuk shared hosting tanpa Supervisor.