Perbedaan Queue Work Dengan Queue Listen Di Laravel
Saya tidak mengerti apa bedanya di antara Laravel queue:work
dan Laravel queue:listen
Saya bisa melihat jika:
- Antrian: Dengarkan antrian yang diberikan
- Pekerjaan: Mengolah tugas selanjutnya dalam antrian
Tetapi tetap tidak mengerti, karena saya telah coba keduanya, keduanya akan menjalankan antrian bila ada antrian baru ("pilihan kerja" bukan hanya berjalan sekali)
Saya tidak bicara mengenai pilihan daemon. Hanya keduanya ini.
Hingga Laravel 5.2
Anda mempunyai :listen
dan :work
.
Work akan mengolah tugas pertama kali dalam antrian.
Listen
akan mengolah semua tugas saat mereka tiba.
Dalam Laravel 5.3
+ ini tak lagi jadi permasalahan. Listen
masih tetap ada, tapi telah usang dan dijadwalkan untuk dihapus di 5.5.
Anda harus pilih :work sekarang.
Work saat ini mengolah tugas satu demi satu, tapi banyak memiliki pilihan yang bisa Anda komposisi.
Edit
Hal di atas betul di saat posting, tapi sejak itu semua sudah berbeda sedikit.
queue:work
agar lebih disukai saat Anda ingin antrian Anda digerakkan sebagai daemon
. Ini bisa menjadi proses berumur panjang yang hendak berguna di mana kinerja jadi masalah. Ini akan memakai versi program yang di-cache dan tidak mem-boot ulangi program setiap pekerjaan diproses.
queue:listen
harus dipakai saat Anda tidak peduli dengan kinerja atau Anda tidak mau harus memulai kembali antrian sesudah membuat perubahan pada code.
- Mereka berdua akan mem-pop job dari antrian 1-by-1 saat diterima.
- Keduanya berbagi hampir pilihan yang serupa tepat yang bisa diteruskan ke mereka.
Ada dua masalah berbeda yang terdaftar.
Ada antrian tukang: antrian pekerjaan dan tukang: dengarkan
antrian: tugas cuma akan hapus tugas selanjutnya dalam antrian, dan cuma mengolah satu pekerjaan itu. Ini ialah perintah 'satu mati' yang hendak kembali lagi ke perintah Prompt sesudah perintah satu antrian diolah. Antrian: dengarkan akan dengarkan antrian, dan terus mengolah tiap perintah antrian yang diterimanya. Ini terus akan jalan tanpa batasan waktu sampai Anda menghentikannya. Di Laravel> = 4.2 ada perintah --daemon dipertambah. Langkah kerjanya ialah terus menjalankan antrian langsung, dibanding me-reboot semua kerangka kerja sesudah tiap antrian diolah. Ini ialah perintah opsional yang kurangi kebutuhan memory dan cpu dari antrian Anda secara berarti.
Poin penting dengan perintah --daemon ialah saat Anda tingkatkan program Anda, Anda perlu me-restart antrian Anda dengan antrian: restart, bila tidak, Anda berpotensi memperoleh semua jenis kekeliruan aneh karena antrian Anda masih mempunyai code lama di memory.
Jadi untuk jawab pertanyaan Anda, "Perintah yang mana harus saya pakai untuk menjalankan daemon saya?" - jawabnya hampir selalu antrian: work --daemon
Dalam Laravel 5.3+ antrian: work menjalankan pendengar daemon. Itu dapat di 5.2 bila Anda tentukan bendera --daemon. Daemon berfungsi mem-boot rangka kerja satu kali dan mengolah tugas berkali-kali. Perintah queue:listen menjalankan sub-proses queue:work --once pada sebuah loop yang mem-boot kerangka kerja tiap iterasi.
queue:work semestinya lumayan banyak dipakai dalam produksi karena lebih efektif dan menggunakan semakin sedikit RAM. Namun; Anda perlu me-restart sesudah tiap perubahan pokok. queue:listen bermanfaat untuk peningkatan dan lingkungan lokal karena Anda tidak harus memulai ulangi setelah perubahan code (karena kerangka kerja mem-boot tiap tugas baru).
Perintah queue:work Artisan termasuk pilihan --daemon untuk memaksa pekerja antrian untuk selalu mengolah pekerjaan tanpa pernah mem-boot ulang kerangka kerja. Ini hasilkan pengurangan yang berarti dalam penggunaan CPU. jika dibandingkan dengan antrian: perintah mendengarkan:
Sama seperti yang Anda lihat, tugas queue:work memberikan dukungan mayoritas pilihan yang serupa ada untuk queue:listen. Anda bisa memakai kontribusi artisan php queue:work tugas untuk melihat semua pilihan yang ada.