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:
Mengirim email.
Mengirim notifikasi.
Membuat file laporan.
Memproses gambar.
Mengimpor data.
Menyinkronkan data melalui API.
Mengirim pesan WhatsApp.
Membuat invoice.
Memproses pembayaran.
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:
Menjalankan worker secara terus-menerus.
Menghidupkan kembali worker yang berhenti.
Mengatur jumlah worker.
Menyimpan log proses.
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:
Memeriksa antrean.
Memproses seluruh job yang tersedia.
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:
Cron Job dijalankan.
Queue Worker mulai bekerja.
Job yang tersedia diproses.
Worker berhenti ketika antrean kosong.
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:
Database dapat diakses.
Tabel
jobstersedia.Tabel
failed_jobstersedia.User database memiliki izin membaca dan menulis.
Konfigurasi
.envtelah 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:
File
artisantidak ditemukan.Versi PHP tidak sesuai.
Ekstensi PHP belum tersedia.
Database gagal terhubung.
Permission folder bermasalah.
Class job tidak ditemukan.
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:
Periksa ekstensi melalui
php -m.Hubungi penyedia hosting.
Kurangi ketergantungan pada job yang berjalan lama.
Atur timeout pada library HTTP atau proses eksternal.
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:
Absolute path PHP.
Absolute path file
artisan.Versi PHP pada cron.
Permission file dan folder.
Output cron.
Environment yang digunakan.
Cron Job sudah tersimpan.
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:
Email harus dikirim dengan cepat.
Notifikasi cukup sensitif terhadap waktu.
Jumlah job relatif kecil.
Resource hosting mencukupi.
Worker tidak berjalan lama.
Gunakan setiap lima menit jika:
Job tidak harus diproses seketika.
Hosting memiliki resource terbatas.
Proses job cukup berat.
Risiko worker bertabrakan cukup tinggi.
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:
Job terus masuk sepanjang waktu.
Queue harus diproses hampir real-time.
Jumlah job semakin besar.
Proses membutuhkan banyak memory.
Job dapat berjalan cukup lama.
Memerlukan beberapa worker sekaligus.
Membutuhkan Redis atau Laravel Horizon.
Cron sering mengalami overlap.
Shared hosting membatasi proses.
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:
QUEUE_CONNECTIONbukansync.Tabel
jobssudah tersedia.Tabel
failed_jobssudah tersedia.Migration berhasil dijalankan.
Job menggunakan
ShouldQueue.Job muncul pada tabel
jobs.Worker berhasil dijalankan manual.
Path PHP sudah benar.
Versi PHP sesuai.
Path file
artisansudah benar.Cron Job sudah tersimpan.
Interval cron sesuai kebutuhan.
Opsi
--stop-when-emptydigunakan.timeoutlebih kecil daripadaretry_after.Output cron sudah diperiksa.
Folder
storagedapat ditulis.Cache konfigurasi sudah dibersihkan.
Failed jobs dipantau secara berkala.
Risiko worker overlap sudah dipertimbangkan.
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:
Konfigurasi Laravel Queue.
Pengaturan Queue Worker cPanel.
Pengaturan Cron Job.
Pembuatan job untuk email dan notifikasi.
Integrasi WhatsApp API.
Pengiriman invoice otomatis.
Sinkronisasi data melalui API.
Konfigurasi Scheduler Laravel.
Migrasi dari shared hosting ke VPS.
Konfigurasi Supervisor.
Konfigurasi Redis dan Laravel Horizon.
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:
QUEUE_CONNECTION=database.Tabel
jobstersedia.Worker dapat dijalankan manual.
Path PHP dan Artisan benar.
Timeout lebih kecil daripada
retry_after.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.
Artikel Terkait
Cara Integrasi WhatsApp Cloud API dengan Laravel
WhatsApp Cloud API memungkinkan aplikasi Laravel mengirim pesan, notifikasi, dan template WhatsApp melalui layanan resmi Meta. Integrasi ini dapat digunakan untuk konfirmasi pesanan, invoice, pengingat pembayaran, customer service, hingga chatbot. Artikel ini membahas konfigurasi token, pengiriman pesan, serta penerimaan webhook menggunakan Laravel.
Cara Membuat Role dan Permission Laravel Tanpa Package
Role dan permission digunakan untuk membatasi akses pengguna berdasarkan tugas dan kewenangannya. Tanpa memasang package tambahan, Laravel dapat membuat sistem hak akses menggunakan migration, relasi Eloquent, middleware, Gate, Policy, dan Blade Directive. Artikel ini membahas pembuatan role dan permission dari awal, mulai dari struktur database, model, seeder, middleware, hingga penerapannya pada route dan tampilan.
Cara Membuat REST API Laravel Menggunakan Sanctum dari Awal
Laravel Sanctum menyediakan sistem autentikasi ringan untuk REST API, aplikasi mobile, dan Single Page Application. Dengan Sanctum, aplikasi dapat membuat token untuk pengguna, melindungi endpoint API, serta membatasi akses berdasarkan autentikasi. Artikel ini membahas pembuatan REST API Laravel dari awal, mulai dari instalasi Sanctum, register, login, logout, hingga CRUD produk.