Bagaimana untuk menggunakan baris gilir Laravel? Di bawah, lajur tutorial Laravel akan memperkenalkan kepada anda cara menggunakan baris gilir Laravel dan senario untuk menggunakan baris gilir saya harap ia akan membantu anda.
Pertama sekali, kita perlu tahu mengapa kita perlu menggunakan baris gilir, dan apa yang akan berlaku jika kita jangan gunakan barisan! Apakah kelebihan dan kekurangan
Kita boleh berikan beberapa contoh senario mudah.
Menghantar e-mel
Apakah masalah biasa yang dihadapi semasa menghantar e-mel ??
Apakah faedah menggunakan baris gilir?
Tingkatkan respons pelanggan
Apabila menghantar, kami tidak memprosesnya serta-merta, tetapi membuangnya ke pelayan, dan baris gilir diurus dan dijadualkan. Anda boleh menyesuaikan dan memilih untuk menghantar serta-merta atau menangguhkan penghantaran mengikut konfigurasi
Tingkatkan toleransi kesalahan
Semasa proses penghantaran, kami mungkin mendapati sasaran ditolak. Sebagai contoh, kebanyakan orang akan menghadapi senario menghantar ralat 502 ke admin@qq.comn
.
Dalam senario ini, kita boleh memahaminya sebagai peristiwa Dalam proses penghantaran e-mel, kita boleh mencetuskan dan membina peristiwa berikut
Dihantar melalui e-mel ini, ia mungkin Jika berbilang masa- tugas memakan dijana, kita sebenarnya boleh membina berbilang perkhidmatan baris gilir. Setiap baris gilir menguruskan perkaranya sendiri, sangat dipisahkan Mereka
boleh disediakan dengan sangat baik melalui baris gilir Laravel hantar serta-merta, kelewatan penghantaran, Cuba hantar semula
Kekerapan penghantaran boleh dikawal
Pembangun yang telah menggunakan e-mel yang dihantar secara berkelompok pasti akan menghadapi masalah, iaitu jika kami menghantar terus dalam kelompok, iaitu, menghantar sejumlah besar e-mel pada masa yang sama. Kemudian pembekal perkhidmatan e-mel berkemungkinan menolak e-mel kami atau e-mel masuk ke dalam tong sampah dan diiktiraf sebagai iklan Kemudian, penghantaran tertunda digunakan di sini . , kami boleh mengkonfigurasi kekerapan secara munasabah mengikut mel yang diketahui menunggu penghantaran dalam perkhidmatan baris gilir semasa, atau menukar konfigurasi mel untuk mencapai kekerapan terkawal.
Sebagai contoh, tetapkan konfigurasi untuk dihantar 10 kali seminit, dsb. Begitu juga, kita boleh mencapai konfigurasi, kawalan frekuensi dan penyahgandingan kawalan penghantaran
yang lain
Sudah tentu kami masih menggunakannya dalam banyak situasi
Cara menggunakan Laravel Queue
Ini hanyalah senarai arahan penggunaan umum dan cara menggunakannya dengan lebih baik . Kod mungkin tidak berjalan dengan baik, perkara utama ialah memahami logik Kami menggunakan Redis sebagai pemandu di sini
Pemandu ditetapkan kepada Redis
> .env QUEUE_CONNECTION=redis > 在 config/queue.php 中可以找到
Penciptaan pantas Baris gilir dan tugasan penghantaran
# 创建 任务 php artisan make:job ProcessPodcast
Penjanaan automatikapp/Jobs/EmailJob.php
class EmailJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $data; /** * Create a new job instance. * * @return void */ public function __construct(array $data) { $this->data = $data; } /** * Execute the job. * * @return void */ public function handle() { $service = new EmailService(); // ... 检查当前可用 Mailer // 这里你自定义就好了,这个方法中你可以根据你自己的配置,获取到当前可用的配置 $mailer = $service->getMailer(); // ... 获取当前要发送的数据 $data = $this->data; $service->send($mailer, $data); } }
Operasi ini boleh didapati dalam dokumentasi
Hantar Panggilan
# 延迟 2分钟 发送 # 这里使用的是 Crontab 包 (不过 Laravel 自带) EmailJob::dispatch()->delay(now()->addMinutes(2)); # 立即发送 (不会进入到队列中) EmailJob::dispatchNow();
Baris gilir di sini menggunakan baris gilir defult secara lalai, kami boleh mengubah suainya untuk menentukan perkhidmatan baris gilir
public function __construct(array $data) { # 使用 emailQueue $this->onQueue('emailQueue'); $this->data = $data; }
Tetapkan bilangan percubaan semula sekiranya gagal
# 重试 5 次 public $tries = 5;
Tetapkan tamat masa
/** * 确定任务应该超时的时间 * * @return \DateTime */ public function retryUntil() { return now()->addMinutes(10); }
Mulakan baris gilir kami
Jika onQueue tidak dikonfigurasikan Jika ya, anda boleh mengkonfigurasinya tanpa parameter ---queue
php artisan queue:work --queue=emailQueue
Acara Laravel juga dilaksanakan melalui baris gilir
# 创建 Event php artisan make:event FailEvent class FailEvent { use Dispatchable, InteractsWithSockets, SerializesModels; protected $data; protected $tag; /** * @param array $data 投递的数据 * @param string $tag 要操作的事情 */ public function __construct(array $data, string $tag = 'system') { $this->data = $data; $this->tag = $tag; } } # 创建 listener php artisan make:listener FailListener class FailListener { /** * Handle the event. * * @param object $event * @return void */ public function handle(FailEvent $event) { $this->{$event->tag}($event->data); } /** * 处理系统异常 * DateTime: 2021/12/3 11:02 上午 * @param array $data */ public function system(array $data) { } /** * 处理邮件异常 * DateTime: 2021/12/3 11:02 上午 */ public function email() { } } # app/Providers/EventServiceProvider.php protected $listen = [ FailEvent::class => [ FailListener::class, ], ] # 投递 event(new FailEvent(['error' = '异常信息'], 'email'));
Sebenarnya, Laravel kebanyakannya membantu saya melaksanakan keseluruhan proses. Anda boleh cuba menggunakan redis untuk melaksanakan baris gilir terkawal sendiri. Kemahiran adalah semua yang anda perlukan untuk menguasai jenis data berkaitan Redis. Berikut ialah senarai ringkas jenis data yang digunakan dalam mod di atas dalam Redis
Senarai
Menggunakannya untuk melengkapkan fungsi baris gilir muncul dan menolak ke dalam tindanan
Set Diisih boleh setkan masa kepada The. markah dalam Set Diisih diisih mengikut markah untuk mencari tugas baris gilir yang ingin kami laksanakan baru-baru ini
Sudah tentu, terdapat banyak lagi kegunaan Redis untuk memenuhi tugasan anda sendiri keperluan.
! !Tiada penyelesaian yang sempurna di dunia, hanya penyelesaian yang paling sesuai dengan anda Apabila anda menghadapi masalah di tempat kerja, cuba belajar membuat inferens, menggunakan pelbagai alatan secara munasabah dan reka bentuk penyelesaian untuk mencapainya. Kod itu hanyalah mikrokosmos terakhir Perkara terakhir adalah untuk belajar memahami Setiap bahasa dan setiap rangka kerja hanyalah pelaksanaan penyelesaian. Hanya dengan menguasainya anda tidak dapat dikalahkan. Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila Lawati:
Pengenalan kepada Pengaturcaraan
Atas ialah kandungan terperinci Mari kita bincangkan tentang mekanisme baris gilir Laravel dan fahami senario penggunaan baris gilir.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!