Tutorial 24 Jul 2026 10 Kali Dibaca

Cara Menjalankan Queue Worker Laravel di cPanel Tanpa Supervisor

Gugun Nurdiansyah
Penulis
Cara Menjalankan Queue Worker Laravel di cPanel Tanpa Supervisor

Apa Itu Queue Worker Laravel?

Queue Worker adalah proses yang mengambil dan menjalankan pekerjaan atau job dari antrean Laravel.

Queue biasanya digunakan untuk memindahkan pekerjaan berat dari proses utama aplikasi agar pengguna tidak perlu menunggu terlalu lama.

Contoh pekerjaan yang cocok dimasukkan ke queue antara lain:

  1. Mengirim email.

  2. Mengirim notifikasi.

  3. Membuat file laporan.

  4. Memproses gambar.

  5. Mengimpor data.

  6. Menyinkronkan data melalui API.

  7. Mengirim pesan WhatsApp.

  8. Membuat invoice.

  9. Memproses pembayaran.

  10. Menjalankan pekerjaan berkala.

Sebagai contoh, ketika pengguna melakukan pemesanan, aplikasi tidak harus menunggu email konfirmasi selesai dikirim. Aplikasi dapat memasukkan pekerjaan tersebut ke queue, lalu Queue Worker memprosesnya secara terpisah.

Mengapa Queue Worker Biasanya Menggunakan Supervisor?

Perintah Queue Worker Laravel berikut akan terus berjalan dan menunggu job baru:

php artisan queue:work

Queue Worker merupakan proses yang berjalan dalam waktu lama. Jika proses berhenti karena error, batas resource, restart server, atau deployment, worker perlu dijalankan kembali.

Pada VPS, Supervisor atau process monitor biasanya digunakan untuk:

  1. Menjalankan worker secara terus-menerus.

  2. Menghidupkan kembali worker yang berhenti.

  3. Mengatur jumlah worker.

  4. Menyimpan log proses.

  5. Mengelola penggunaan resource.

Laravel merekomendasikan penggunaan process monitor untuk menjaga proses worker tetap berjalan dan memulai ulang worker ketika proses keluar. (Laravel)

Shared hosting cPanel umumnya tidak memberikan akses untuk memasang atau mengatur Supervisor. Sebagai alternatif, Queue Worker dapat dijalankan secara berkala melalui Cron Job.

Cara Kerja Queue Worker Tanpa Supervisor

Tanpa Supervisor, worker sebaiknya tidak dipaksa berjalan tanpa henti.

Gunakan perintah berikut:

php artisan queue:work --stop-when-empty

Opsi --stop-when-empty membuat worker:

  1. Memeriksa antrean.

  2. Memproses seluruh job yang tersedia.

  3. Berhenti secara otomatis setelah antrean kosong.

Laravel memang menyediakan opsi tersebut untuk memproses semua job lalu menghentikan worker secara normal. (Laravel)

Selanjutnya, Cron Job cPanel menjalankan perintah tersebut kembali setiap menit atau beberapa menit.

Alurnya menjadi:

  1. Cron Job dijalankan.

  2. Queue Worker mulai bekerja.

  3. Job yang tersedia diproses.

  4. Worker berhenti ketika antrean kosong.

  5. Cron menjalankan worker kembali pada jadwal berikutnya.

Cara ini sesuai untuk aplikasi dengan jumlah queue rendah hingga menengah. Untuk antrean besar, pekerjaan real-time, atau job yang terus masuk, penggunaan VPS dan process monitor lebih disarankan.

Langkah 1: Atur Queue Connection

Buka file .env pada project Laravel.

Pastikan queue tidak menggunakan driver sync.

Ubah:

QUEUE_CONNECTION=sync

menjadi:

QUEUE_CONNECTION=database

Driver sync menjalankan job secara langsung pada proses request sehingga pekerjaan tidak benar-benar masuk ke antrean.

Driver database menyimpan job di dalam tabel database agar dapat diproses oleh Queue Worker.

Setelah mengubah .env, jalankan:

php artisan optimize:clear

Setelah konfigurasi production stabil, Anda dapat membuat ulang cache:

php artisan optimize

Langkah 2: Siapkan Tabel Queue

Laravel membutuhkan tabel jobs untuk menggunakan database queue.

Pada project Laravel baru, migration tabel tersebut biasanya sudah tersedia.

Periksa folder:

database/migrations

Cari file migration yang berisi pembuatan tabel:

jobs
job_batches
failed_jobs

Jika migration tabel queue belum tersedia, jalankan:

php artisan make:queue-table

Kemudian jalankan migration:

php artisan migrate

Laravel menyediakan perintah make:queue-table untuk membuat migration tabel antrean apabila migration tersebut belum tersedia pada project. (Laravel)

Pada server production, gunakan:

php artisan migrate --force

Opsi --force diperlukan agar migration dapat dijalankan tanpa konfirmasi interaktif pada lingkungan production.

Langkah 3: Pastikan Konfigurasi Database Benar

Periksa koneksi database di file .env:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user_database
DB_PASSWORD="password_database"

QUEUE_CONNECTION=database

Pastikan:

  1. Database dapat diakses.

  2. Tabel jobs tersedia.

  3. Tabel failed_jobs tersedia.

  4. User database memiliki izin membaca dan menulis.

  5. Konfigurasi .env telah dibersihkan dari cache lama.

Periksa status migration dengan:

php artisan migrate:status

Langkah 4: Buat Job untuk Pengujian

Anda dapat membuat job sederhana menggunakan:

php artisan make:job TestQueueJob

Buka file:

app/Jobs/TestQueueJob.php

Kemudian isi bagian handle() dengan pencatatan log:

<?php

namespace App\Jobs;

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
use Illuminate\Support\Facades\Log;

class TestQueueJob implements ShouldQueue
{
    use Queueable;

    public function handle(): void
    {
        Log::info('Queue Worker berhasil dijalankan pada '.now());
    }
}

Pastikan class job menggunakan:

implements ShouldQueue

Tanpa interface tersebut, job dapat dijalankan secara langsung dan tidak dimasukkan ke antrean.

Langkah 5: Masukkan Job ke Queue

Untuk pengujian, job dapat dikirim melalui route sementara.

Buka:

routes/web.php

Tambahkan:

use App\Jobs\TestQueueJob;
use Illuminate\Support\Facades\Route;

Route::get('/test-queue', function () {
    TestQueueJob::dispatch();

    return 'Job berhasil dimasukkan ke queue.';
});

Buka URL berikut:

https://domainanda.com/test-queue

Setelah halaman dibuka, periksa tabel:

jobs

Jika konfigurasi benar, akan terdapat data job baru pada tabel tersebut.

Hapus route pengujian setelah proses pemeriksaan selesai agar tidak dapat digunakan oleh pengunjung.

Langkah 6: Jalankan Worker Secara Manual

Masuk ke folder utama Laravel melalui Terminal cPanel atau SSH.

Contoh:

cd /home/username/laravel-app

Pastikan folder tersebut memiliki file:

artisan

Kemudian jalankan:

php artisan queue:work --stop-when-empty

Jika berhasil, hasilnya dapat terlihat seperti:

Processing jobs from the [default] queue.

App\Jobs\TestQueueJob ........ RUNNING
App\Jobs\TestQueueJob ........ DONE

Periksa log Laravel:

storage/logs/laravel.log

Anda seharusnya menemukan catatan:

Queue Worker berhasil dijalankan

Jika job selesai diproses, data pada tabel jobs akan hilang.

Langkah 7: Ketahui Lokasi Project Laravel

Cron Job membutuhkan lokasi lengkap menuju file artisan.

Struktur hosting biasanya seperti berikut:

/home/username/laravel-app
/home/username/public_html

Source Laravel berada di:

/home/username/laravel-app

Sedangkan file yang dapat diakses website berada di:

/home/username/public_html

Dalam struktur tersebut, lokasi file Artisan adalah:

/home/username/laravel-app/artisan

Jangan menggunakan:

/home/username/public_html/artisan

jika file artisan tidak berada di sana.

Gunakan perintah berikut untuk mengetahui lokasi saat ini:

pwd

Periksa keberadaan Artisan:

ls -la artisan

Langkah 8: Ketahui Lokasi PHP cPanel

Cron Job sebaiknya menggunakan absolute path menuju binary PHP.

Periksa lokasi PHP melalui Terminal:

which php

Contoh hasil:

/usr/local/bin/php

Periksa versinya:

php -v

Pada server cPanel, setiap versi PHP dapat memiliki lokasi berbeda.

Contoh PHP 8.2:

/opt/cpanel/ea-php82/root/usr/bin/php

Contoh PHP 8.3:

/opt/cpanel/ea-php83/root/usr/bin/php

Contoh PHP 8.4:

/opt/cpanel/ea-php84/root/usr/bin/php

Gunakan versi PHP yang sama dengan versi domain agar dependency Laravel dapat dijalankan dengan benar.

Langkah 9: Buat Cron Job di cPanel

Masuk ke cPanel, kemudian buka:

Advanced → Cron Jobs

Pada bagian Add New Cron Job, pilih jadwal:

Once Per Minute

Atau isi:

Minute: *
Hour: *
Day: *
Month: *
Weekday: *

Formatnya adalah:

* * * * *

cPanel menjalankan Cron Job berdasarkan waktu atau interval yang ditentukan. Dokumentasinya juga menyarankan penggunaan path perintah yang benar dan memberi jarak cukup agar proses sebelumnya tidak bertabrakan dengan proses berikutnya. (cPanel & WHM Documentation)

Contoh Perintah Cron Queue Worker

Jika lokasi PHP adalah:

/usr/local/bin/php

dan project Laravel berada di:

/home/username/laravel-app

gunakan:

/usr/local/bin/php /home/username/laravel-app/artisan queue:work --stop-when-empty --tries=3 --timeout=120 >> /dev/null 2>&1

Jika menggunakan PHP 8.4 cPanel:

/opt/cpanel/ea-php84/root/usr/bin/php /home/username/laravel-app/artisan queue:work --stop-when-empty --tries=3 --timeout=120 >> /dev/null 2>&1

Ganti:

username

dengan username cPanel.

Ganti:

laravel-app

dengan nama folder project Laravel.

Penjelasan Opsi pada Perintah Queue

Perintah yang digunakan:

php artisan queue:work --stop-when-empty --tries=3 --timeout=120

memiliki fungsi berikut.

queue:work

Menjalankan Queue Worker untuk mengambil dan memproses job.

--stop-when-empty

Menghentikan worker setelah tidak ada job yang tersisa.

Opsi ini penting pada cPanel agar proses tidak terus berjalan tanpa Supervisor.

--tries=3

Memberikan batas maksimal tiga percobaan untuk setiap job.

Jika job terus mengalami error, job akan dipindahkan ke daftar failed jobs setelah jumlah percobaan habis.

--timeout=120

Membatasi waktu pemrosesan satu job maksimal 120 detik.

Laravel menyediakan opsi timeout untuk menghentikan worker ketika suatu job berjalan melebihi batas waktu. Nilai timeout harus dibuat lebih pendek daripada nilai retry_after agar satu job tidak diproses dua kali. (Laravel)

Atur retry_after dengan Benar

Buka file:

config/queue.php

Pada koneksi database, periksa:

'database' => [
    'driver' => 'database',
    'connection' => env('DB_QUEUE_CONNECTION'),
    'table' => env('DB_QUEUE_TABLE', 'jobs'),
    'queue' => env('DB_QUEUE', 'default'),
    'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 180),
    'after_commit' => false,
],

Tambahkan ke .env jika project mendukung variabel tersebut:

DB_QUEUE_RETRY_AFTER=180

Jika worker menggunakan:

--timeout=120

maka retry_after=180 memberikan jarak waktu sebelum job dianggap perlu dicoba kembali.

Prinsip yang perlu digunakan:

timeout harus lebih kecil daripada retry_after

Contohnya:

timeout: 120 detik
retry_after: 180 detik

Jika timeout lebih besar daripada retry_after, job yang masih berjalan dapat dianggap gagal dan diproses kembali oleh worker lain. (Laravel)

Menghindari Worker Berjalan Bersamaan

Apabila cron dijalankan setiap menit, worker baru dapat dimulai ketika worker sebelumnya masih memproses job.

Kondisi tersebut dapat meningkatkan penggunaan CPU dan memory.

cPanel juga memperingatkan bahwa cron yang dijalankan terlalu sering dapat memulai proses baru sebelum proses sebelumnya selesai. (cPanel & WHM Documentation)

Terdapat beberapa cara untuk menguranginya.

Cara 1: Gunakan Interval Lebih Panjang

Untuk aplikasi dengan job yang tidak mendesak, jalankan setiap lima menit:

*/5 * * * *

Perintahnya tetap:

/usr/local/bin/php /home/username/laravel-app/artisan queue:work --stop-when-empty --tries=3 --timeout=120 >> /dev/null 2>&1

Cara 2: Gunakan flock jika Tersedia

Jika server menyediakan perintah flock, gunakan:

flock -n /tmp/laravel-queue.lock /usr/local/bin/php /home/username/laravel-app/artisan queue:work --stop-when-empty --tries=3 --timeout=120 >> /dev/null 2>&1

flock mencegah cron berikutnya menjalankan worker apabila proses sebelumnya masih menggunakan lock.

Periksa ketersediaannya:

which flock

Tidak semua shared hosting menyediakan flock. Jika tidak tersedia, gunakan interval cron yang lebih aman atau jalankan queue melalui Laravel Scheduler dengan pengaturan agar tugas tidak tumpang tindih.

Cara 3: Gunakan Laravel Scheduler

Pada Laravel modern, buka:

routes/console.php

Tambahkan:

use Illuminate\Support\Facades\Schedule;

Schedule::command(
    'queue:work --stop-when-empty --tries=3 --timeout=120'
)
    ->everyMinute()
    ->withoutOverlapping();

Kemudian Cron Job cPanel cukup menjalankan Scheduler:

/usr/local/bin/php /home/username/laravel-app/artisan schedule:run >> /dev/null 2>&1

Metode ini membantu Laravel mencegah perintah queue berjalan secara tumpang tindih.

Menyimpan Output ke File Log

Saat pertama kali melakukan konfigurasi, jangan langsung membuang seluruh output ke /dev/null.

Gunakan file log sementara:

/usr/local/bin/php /home/username/laravel-app/artisan queue:work --stop-when-empty --tries=3 --timeout=120 >> /home/username/queue-worker.log 2>&1

Setelah beberapa menit, buka:

/home/username/queue-worker.log

Output tersebut dapat menunjukkan error seperti:

  1. File artisan tidak ditemukan.

  2. Versi PHP tidak sesuai.

  3. Ekstensi PHP belum tersedia.

  4. Database gagal terhubung.

  5. Permission folder bermasalah.

  6. Class job tidak ditemukan.

  7. Job melebihi timeout.

Setelah worker dipastikan berjalan, ubah kembali output menjadi:

>> /dev/null 2>&1

cPanel mendukung penggunaan /dev/null 2>&1 untuk menonaktifkan output dan email dari satu Cron Job. (cPanel & WHM Documentation)

Menjalankan Queue Tertentu

Jika aplikasi memiliki beberapa antrean, Anda dapat menentukan queue yang ingin diproses.

Contoh:

php artisan queue:work --queue=emails --stop-when-empty

Untuk memproses beberapa queue berdasarkan prioritas:

php artisan queue:work --queue=high,default,low --stop-when-empty

Worker akan memeriksa queue high terlebih dahulu, kemudian default, lalu low.

Contoh Cron Job:

/usr/local/bin/php /home/username/laravel-app/artisan queue:work --queue=high,default,low --stop-when-empty --tries=3 --timeout=120 >> /dev/null 2>&1

Melihat Job yang Gagal

Gunakan:

php artisan queue:failed

Perintah tersebut menampilkan daftar job yang gagal, termasuk ID, connection, queue, dan waktu kegagalan. (Laravel)

Untuk mencoba ulang satu job:

php artisan queue:retry ID_JOB

Untuk mencoba ulang seluruh failed jobs:

php artisan queue:retry all

Untuk menghapus satu failed job:

php artisan queue:forget ID_JOB

Untuk menghapus seluruh failed jobs:

php artisan queue:flush

Gunakan perintah penghapusan dengan hati-hati karena data riwayat error akan hilang.

Jika Tabel failed_jobs Belum Tersedia

Migration failed_jobs biasanya sudah tersedia pada project Laravel baru.

Jika belum tersedia, jalankan:

php artisan make:queue-failed-table
php artisan migrate

Laravel menyediakan perintah tersebut untuk membuat tabel penyimpanan job yang gagal apabila migration belum tersedia. (Laravel)

Membersihkan Failed Jobs Lama

Failed jobs yang terus tersimpan dapat memenuhi database.

Gunakan:

php artisan queue:prune-failed --hours=168

Perintah tersebut menghapus failed jobs yang lebih lama dari tujuh hari atau 168 jam.

Anda dapat menjadwalkannya melalui Laravel Scheduler:

Schedule::command('queue:prune-failed --hours=168')->daily();

Queue Worker Tidak Memproses Job

Jika job tetap berada pada tabel jobs, periksa beberapa hal berikut.

QUEUE_CONNECTION Masih sync

Gunakan:

QUEUE_CONNECTION=database

Kemudian jalankan:

php artisan optimize:clear

Worker Menggunakan Queue yang Berbeda

Periksa kolom queue pada tabel jobs.

Jika job dikirim ke queue:

SendInvoice::dispatch()->onQueue('invoices');

worker harus menggunakan:

php artisan queue:work --queue=invoices --stop-when-empty

Cron Menggunakan Path PHP yang Salah

Gunakan absolute path seperti:

/opt/cpanel/ea-php84/root/usr/bin/php

bukan hanya:

php

Path Artisan Tidak Benar

Pastikan file ini tersedia:

/home/username/laravel-app/artisan

Cache Konfigurasi Belum Dibersihkan

Jalankan:

php artisan optimize:clear

Database Queue Belum Tersedia

Pastikan tabel berikut tersedia:

jobs
failed_jobs

Permission Storage Bermasalah

Pastikan folder berikut dapat ditulis:

storage
bootstrap/cache

Pada sebagian hosting, permission berikut dapat digunakan sebagai titik awal:

chmod -R 775 storage
chmod -R 775 bootstrap/cache

Sesuaikan dengan ownership dan konfigurasi hosting. Hindari menggunakan 777 pada seluruh project.

Error pcntl Extension Tidak Tersedia

Fitur timeout worker Laravel membutuhkan ekstensi PHP PCNTL agar dapat menghentikan job sesuai batas waktunya.

Pada sebagian shared hosting, ekstensi tersebut mungkin tidak tersedia.

Jika muncul error mengenai PCNTL:

  1. Periksa ekstensi melalui php -m.

  2. Hubungi penyedia hosting.

  3. Kurangi ketergantungan pada job yang berjalan lama.

  4. Atur timeout pada library HTTP atau proses eksternal.

  5. Pertimbangkan menggunakan VPS jika worker membutuhkan kontrol proses yang lebih lengkap.

Laravel menjelaskan bahwa penggunaan timeout job membutuhkan ekstensi PCNTL. (Laravel)

Queue Berjalan Manual tetapi Tidak Melalui Cron

Jika perintah berikut berhasil melalui Terminal:

php artisan queue:work --stop-when-empty

tetapi tidak berjalan melalui cron, periksa:

  1. Absolute path PHP.

  2. Absolute path file artisan.

  3. Versi PHP pada cron.

  4. Permission file dan folder.

  5. Output cron.

  6. Environment yang digunakan.

  7. Cron Job sudah tersimpan.

  8. Jadwal cron sudah benar.

Gunakan sementara:

/opt/cpanel/ea-php84/root/usr/bin/php /home/username/laravel-app/artisan queue:work --stop-when-empty >> /home/username/queue-debug.log 2>&1

Kemudian periksa queue-debug.log.

Perlukah Menjalankan queue:restart?

Perintah:

php artisan queue:restart

digunakan untuk memberi sinyal agar worker jangka panjang berhenti secara normal setelah menyelesaikan job yang sedang diproses.

Pada metode cPanel dengan --stop-when-empty, worker memang berhenti setelah antrean kosong. Karena itu, setiap cron berikutnya akan memulai proses baru dan membaca source code terbaru.

Meskipun demikian, setelah deployment Anda tetap dapat menjalankan:

php artisan optimize:clear
php artisan optimize

Pada lingkungan dengan proses worker yang terus hidup, worker harus di-reload atau dimulai ulang setelah deployment agar menggunakan source code terbaru. (Laravel)

Cron Setiap Menit atau Lima Menit?

Pilih interval berdasarkan kebutuhan aplikasi.

Gunakan setiap menit jika:

  1. Email harus dikirim dengan cepat.

  2. Notifikasi cukup sensitif terhadap waktu.

  3. Jumlah job relatif kecil.

  4. Resource hosting mencukupi.

  5. Worker tidak berjalan lama.

Gunakan setiap lima menit jika:

  1. Job tidak harus diproses seketika.

  2. Hosting memiliki resource terbatas.

  3. Proses job cukup berat.

  4. Risiko worker bertabrakan cukup tinggi.

  5. Penyedia hosting membatasi Cron Job.

Untuk shared hosting, interval lima menit sering lebih aman bagi proses yang tidak mendesak.

Kapan Harus Beralih ke VPS?

Cron Job merupakan solusi praktis untuk queue sederhana, tetapi memiliki keterbatasan.

Pertimbangkan VPS dan Supervisor apabila:

  1. Job terus masuk sepanjang waktu.

  2. Queue harus diproses hampir real-time.

  3. Jumlah job semakin besar.

  4. Proses membutuhkan banyak memory.

  5. Job dapat berjalan cukup lama.

  6. Memerlukan beberapa worker sekaligus.

  7. Membutuhkan Redis atau Laravel Horizon.

  8. Cron sering mengalami overlap.

  9. Shared hosting membatasi proses.

  10. Queue menjadi bagian penting dari operasional bisnis.

Pada VPS, process monitor dapat menjaga worker tetap berjalan dan memulihkannya secara otomatis jika proses berhenti.

Contoh Konfigurasi Cron yang Disarankan

Untuk PHP 8.4, project berada di /home/username/OVLAWEB, dan queue menggunakan database:

/opt/cpanel/ea-php84/root/usr/bin/php /home/username/OVLAWEB/artisan queue:work database --queue=default --stop-when-empty --tries=3 --timeout=120 >> /dev/null 2>&1

Jadwal setiap menit:

* * * * *

Untuk pengujian awal:

/opt/cpanel/ea-php84/root/usr/bin/php /home/username/OVLAWEB/artisan queue:work database --queue=default --stop-when-empty --tries=3 --timeout=120 >> /home/username/queue-worker.log 2>&1

Setelah tidak ada error, ubah output ke /dev/null.

Checklist Queue Worker Laravel di cPanel

Sebelum menyelesaikan konfigurasi, pastikan:

  1. QUEUE_CONNECTION bukan sync.

  2. Tabel jobs sudah tersedia.

  3. Tabel failed_jobs sudah tersedia.

  4. Migration berhasil dijalankan.

  5. Job menggunakan ShouldQueue.

  6. Job muncul pada tabel jobs.

  7. Worker berhasil dijalankan manual.

  8. Path PHP sudah benar.

  9. Versi PHP sesuai.

  10. Path file artisan sudah benar.

  11. Cron Job sudah tersimpan.

  12. Interval cron sesuai kebutuhan.

  13. Opsi --stop-when-empty digunakan.

  14. timeout lebih kecil daripada retry_after.

  15. Output cron sudah diperiksa.

  16. Folder storage dapat ditulis.

  17. Cache konfigurasi sudah dibersihkan.

  18. Failed jobs dipantau secara berkala.

  19. Risiko worker overlap sudah dipertimbangkan.

  20. Resource hosting masih mencukupi.

Bantuan Laravel dari Ovla Media

Menjalankan Queue Worker tanpa Supervisor dapat menjadi solusi untuk aplikasi Laravel yang masih menggunakan shared hosting.

Namun, konfigurasi yang tidak tepat dapat menyebabkan job tidak diproses, dikirim berulang kali, mengalami timeout, atau menumpuk di database.

Ovla Media menyediakan layanan pengembangan, deployment, perbaikan, dan pemeliharaan aplikasi Laravel.

Layanan yang dapat dikembangkan meliputi:

  1. Konfigurasi Laravel Queue.

  2. Pengaturan Queue Worker cPanel.

  3. Pengaturan Cron Job.

  4. Pembuatan job untuk email dan notifikasi.

  5. Integrasi WhatsApp API.

  6. Pengiriman invoice otomatis.

  7. Sinkronisasi data melalui API.

  8. Konfigurasi Scheduler Laravel.

  9. Migrasi dari shared hosting ke VPS.

  10. Konfigurasi Supervisor.

  11. Konfigurasi Redis dan Laravel Horizon.

  12. Pengembangan aplikasi bisnis custom.

Kesimpulan

Queue Worker Laravel digunakan untuk menjalankan pekerjaan di belakang layar agar proses utama aplikasi tetap cepat.

Pada cPanel tanpa Supervisor, queue dapat dijalankan menggunakan Cron Job dan perintah:

php artisan queue:work --stop-when-empty

Contoh perintah lengkap:

/opt/cpanel/ea-php84/root/usr/bin/php /home/username/laravel-app/artisan queue:work --stop-when-empty --tries=3 --timeout=120 >> /dev/null 2>&1

Gunakan jadwal setiap satu atau lima menit sesuai kebutuhan serta kemampuan server.

Sebelum mengaktifkan cron, pastikan:

  1. QUEUE_CONNECTION=database.

  2. Tabel jobs tersedia.

  3. Worker dapat dijalankan manual.

  4. Path PHP dan Artisan benar.

  5. Timeout lebih kecil daripada retry_after.

  6. Risiko proses berjalan bersamaan sudah ditangani.

Metode ini cukup efektif untuk aplikasi dengan jumlah job rendah hingga menengah. Jika jumlah antrean semakin besar atau harus diproses secara real-time, penggunaan VPS dengan Supervisor atau process monitor merupakan pilihan yang lebih stabil.

#Laravel Queue #Queue Worker Laravel #Queue Laravel cPanel #Laravel Tanpa Supervisor #Cron Job Laravel #Queue Work Laravel #Stop When Empty Laravel #Laravel Shared Hosting #Database Queue Laravel #Failed Jobs Laravel #Laravel Scheduler #PHP Artisan #Queue Worker Tidak Berjalan #Laravel Deployment #Laravel Production #Laravel Hosting #Laravel cPanel #Web Development #PHP Developer #Laravel Developer Indonesia #Ovla Media #Jasa Laravel #Jasa Deployment Laravel #Jasa Perbaikan Laravel
Beranda Produk Artikel
Konsultasi
OVLA

Navigasi Utama

Hubungi Kami

Mulai Konsultasi Sekarang