Gunakan penyelia untuk memantau kerja dalam baris gilir,
php artisan queue:listen --timeout=0
Gunakan
php artisan queue:failed-table
Rekod giliran yang gagal telah diwujudkan, tetapi keadaan semasa ialah yang gagal sentiasa dilaksanakan berulang kali dan tidak ditulis kepada failed_job
Dalam dokumentasi laravel
php artisan queue:listen connection-name --tries=3
Apakah yang dimaksudkan dengan nama sambungan?
php artisan queue:listen --timeout=0 --try=3, queue execution error
exception 'Swift_TransportException' with message 'Expected response code 250 but got code "", with message ""'
Bagaimana untuk menyelesaikan masalah ini?
Anda boleh memilih daripada pelbagai perkhidmatan giliran dalam laravel, yang biasa adalah redis dan beanstalk Memandangkan redis adalah db yang mudah, datanya benar-benar telus, jadi lebih mudah difahami jika redis digunakan sebagai objek penjelasan di sini. .
Kaedah permulaan baris gilir dalam laravel termasuk
queue:listen
danqueue:work
, denganqueue:work
bermaksud menjalankan tugas seterusnya secara berasingan perbezaan Sila lihat: perbezaan antara queue:listen dan queue:work --daemon.queue:listen
juga dilaksanakan secara dalaman dengan memanggilqueue:work
lagi dan lagi Sekarang mari kita lihat perintahwork
.queue:listen
和queue:work
, 其中queue:work
表示单独运行下一个job. 关于区别请看:queue:listen 和 queue:work --daemon 的区别 。queue:listen
内部也是一次次的调用queue:work
实现的,现在我们来看work
命令。在
IlluminateQueueConsoleWorkCommand
中是不是看见了我们熟悉的fire
方法?对就是它。继续追,调用
runWork
方式查找job并且执行.这里有一个daemon
选项, 表示是否作为守护运行。直接将daemon认为false(因为daemon其实就是一个while(true) ):joy:。看到
runWork
其实是调用的IlluminateQueueWorker::pop
方法到了最终执行job的位置(删掉了空行和注释,因为我要来上蹩脚的中文注释了.(逃 ):
恩,差不多就是这么回事了。
你那个抛出来的
Adakah anda melihat kaedahSwift_TransportException
是发送邮件程序swiftmailer
fire
yang biasa dalamIlluminateQueueConsoleWorkCommand
? Ya itu sahaja. Teruskan mengejar,Panggil kaedah
runWork
untuk mencari kerja dan laksanakannya Terdapat pilihandaemon
di sini, menunjukkan sama ada untuk dijalankan sebagai daemon. Secara langsung menganggap daemon sebagai palsu (kerana daemon sebenarnya adalah sementara(benar)):joy:. 🎜 🎜Lihat bahawarunWork
sebenarnya memanggil kaedahIlluminateQueueWorker::pop
🎜 rrreee 🎜Tiba di kedudukan pelaksanaan akhir kerja (memadamkan baris dan komen kosong, kerana saya akan menulis komen bahasa Cina yang buruk. (Escape):🎜 rrreee 🎜Nah, itu sahaja. 🎜 🎜Swift_TransportException
yang anda lemparkan ialah ralat yang dilemparkan oleh program penghantaran e-melswiftmailer
🎜Dalam konfigurasi sambungan dalam config/queue.php, sync, beanstalkd, sqs, dll. ialah nama sambungan.