Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

Menjalankan Laravel Queue di cPanel Menggunakan Cronjob

1 min read .
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

  1. Cronjob menjalankan php artisan schedule:run setiap menit.
  2. Laravel Scheduler memanggil queue worker (queue:work --stop-when-empty).
  3. Semua job yang ada di queue diproses.
  4. 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.

Lihat Juga

chevron-up