Rumah rangka kerja php Laravel Mesej Beratur dalam Laravel: Menyahganding Pemprosesan Tugas Asynchronous

Mesej Beratur dalam Laravel: Menyahganding Pemprosesan Tugas Asynchronous

Aug 26, 2023 pm 07:15 PM
baris gilir mesej penyahgandingan Pemprosesan tugas tak segerak

Mesej Beratur dalam Laravel: Menyahganding Pemprosesan Tugas Asynchronous

Mesej Beratur dalam Laravel: Menyahganding Pemprosesan Tugas Asynchronous

Pengenalan:
Dalam pembangunan web, cara mengendalikan tugas yang memakan masa adalah masalah biasa. Pendekatan tradisional adalah untuk melaksanakan tugas secara langsung semasa pemprosesan permintaan web, tetapi pendekatan ini akan menyebabkan masa tindak balas permintaan menjadi perlahan, dan ia terdedah kepada masalah tidak dapat mencuba semula apabila tugasan gagal. Untuk menyelesaikan masalah ini, baris gilir mesej boleh digunakan untuk pemprosesan tugas tak segerak. Rangka kerja Laravel menyediakan fungsi baris gilir yang mudah digunakan dan berkuasa Artikel ini akan memperkenalkan cara menggunakan baris gilir mesej dalam Laravel untuk memisahkan pemprosesan tugas tak segerak.

1. Mengapa menggunakan baris gilir mesej
Menggunakan baris gilir mesej mempunyai kelebihan utama berikut:

  1. Pemprosesan tugas yang dipisahkan: Dengan meletakkan tugas ke dalam baris gilir mesej, penyahgandingan tugas boleh dicapai. Iaitu, pencetus dan pelaksanaan tugas boleh dikendalikan secara berasingan Pelaksana tugas hanya perlu memantau baris gilir tanpa mengambil berat tentang butiran pencetus tugas.
  2. Pemprosesan tak segerak: Selepas meletakkan tugasan ke dalam baris gilir mesej, masa tindak balas permintaan web boleh menjadi lebih cepat kerana pelaksanaan tugas tidak akan menyekat pemprosesan permintaan web.
  3. Mekanisme cuba semula: Sistem baris gilir mesej biasanya menyediakan mekanisme cuba semula kegagalan, yang boleh mencuba semula tugas secara automatik untuk memastikan tugas akhirnya dapat dilaksanakan.

2. Konfigurasi asas sistem baris gilir Laravel
Dalam Laravel, menggunakan fungsi baris gilir memerlukan beberapa konfigurasi asas. Pertama, anda perlu mengkonfigurasi pemacu baris gilir dalam fail konfigurasi Laravel Anda boleh memilih untuk menggunakan pangkalan data, Redis, dll. sebagai storan baris gilir. Tambahkan konfigurasi berikut pada fail .env: .env 文件中:

QUEUE_CONNECTION=database
Salin selepas log masuk

然后,在Laravel的数据库迁移文件中添加用于存储队列任务的数据表。可以使用以下命令生成迁移文件:

php artisan queue:table
Salin selepas log masuk

生成的迁移文件中会包含一个名为jobs的数据表。

接下来,运行迁移命令来创建数据表:

php artisan migrate
Salin selepas log masuk

三、定义队列任务
在Laravel中,队列任务是通过继承IlluminateContractsQueueShouldQueue接口并实现handle方法来定义的。下面是一个示例的队列任务定义:

<?php

namespace AppJobs;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;

class ProcessPodcast implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $podcast;

    public function __construct($podcast)
    {
        $this->podcast = $podcast;
    }

    public function handle()
    {
        // 处理耗时的任务
        // 例如,发送邮件、生成报表等
    }
}
Salin selepas log masuk

handle方法中编写具体的任务逻辑。其中,ShouldQueue接口和DispatchableInteractsWithQueueQueueableSerializesModels这几个特质是Laravel队列系统所需的。

四、触发任务
要触发一个队列任务,可以使用dispatch方法。下面是一个触发任务的示例代码:

<?php

use AppJobsProcessPodcast;
use IlluminateHttpRequest;

class PodcastController extends Controller
{
    public function store(Request $request)
    {
        // 处理其他的请求逻辑

        ProcessPodcast::dispatch($podcast)
            ->delay(now()->addMinutes(10));
    }
}
Salin selepas log masuk

这里,我们使用dispatch方法触发了一个ProcessPodcast任务,并可以设置任务的延迟执行时间。

五、任务的监听与执行
Laravel提供了queue:listen命令来监听并执行队列任务。可以在终端中运行以下命令来启动队列监听器:

php artisan queue:listen
Salin selepas log masuk

队列监听器将会不断地监听队列并执行任务。

六、重试机制
Laravel队列系统提供了对失败任务的重试机制。如果任务执行失败,队列监听器会自动将其重新放入队列,并根据配置的重试次数进行重试。可以在.env

QUEUE_TRIES=3
Salin selepas log masuk
Kemudian, tambahkan jadual data yang digunakan untuk menyimpan tugas baris gilir dalam fail pemindahan pangkalan data Laravel. Anda boleh menggunakan arahan berikut untuk menjana fail migrasi:

rrreee

Fail migrasi yang dijana akan mengandungi jadual data bernama jobs.


Seterusnya, jalankan arahan migrasi untuk mencipta jadual data:

rrreee🎜3 Tentukan tugas baris gilir🎜Dalam Laravel, tugasan giliran mewarisi antara muka IlluminateContractsQueueShouldQueue dan laksanakan kaedah handle untuk menentukan. Berikut ialah contoh definisi tugasan baris gilir: 🎜rrreee🎜Tulis logik tugasan tertentu dalam kaedah handle. Antaranya, antara muka ShouldQueue dan Dispatchable, InteractsWithQueue, Queueable, SerializesModels Traits diperlukan oleh sistem giliran Laravel. 🎜🎜4. Mencetuskan tugas🎜Untuk mencetuskan tugas baris gilir, anda boleh menggunakan kaedah penghantaran. Berikut ialah contoh kod untuk mencetuskan tugasan: 🎜rrreee🎜Di sini, kami menggunakan kaedah dispatch untuk mencetuskan tugas ProcessPodcast dan boleh menetapkan masa pelaksanaan tertunda bagi tugasan. 🎜🎜5. Pemantauan dan pelaksanaan tugas🎜Laravel menyediakan perintah queue:listen untuk memantau dan melaksanakan tugasan baris gilir. Anda boleh menjalankan arahan berikut dalam terminal untuk memulakan pendengar baris gilir: 🎜rrreee🎜Pendengar baris gilir akan terus mendengar baris gilir dan melaksanakan tugas. 🎜🎜 6. Mekanisme cuba semula 🎜 Sistem baris gilir Laravel menyediakan mekanisme cuba semula untuk tugasan yang gagal. Jika pelaksanaan tugas gagal, pendengar baris gilir akan meletakkannya semula secara automatik ke dalam baris gilir dan cuba lagi mengikut bilangan percubaan semula yang dikonfigurasikan. Bilangan percubaan semula boleh dikonfigurasikan dalam fail .env: 🎜rrreee🎜Konfigurasi di sini menunjukkan bahawa tugasan akan dicuba semula sehingga 3 kali selepas kegagalan. 🎜🎜7. Ringkasan🎜Dengan menggunakan sistem baris gilir Laravel, kami boleh melaksanakan pemprosesan tugas tak segerak dengan mudah. Dengan meletakkan tugas dalam baris gilir mesej, penyahgandingan tugas, pemprosesan tak segerak dan percubaan semula kegagalan boleh dicapai, meningkatkan prestasi dan kebolehpercayaan aplikasi web. Di atas ialah pengenalan asas untuk menggunakan baris gilir mesej untuk pemprosesan tugas tak segerak dalam Laravel. Saya harap ia akan membantu anda. 🎜

Atas ialah kandungan terperinci Mesej Beratur dalam Laravel: Menyahganding Pemprosesan Tugas Asynchronous. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Amalan pembangunan Java Websocket: bagaimana untuk melaksanakan fungsi baris gilir mesej Amalan pembangunan Java Websocket: bagaimana untuk melaksanakan fungsi baris gilir mesej Dec 02, 2023 pm 01:57 PM

Amalan pembangunan Java Websocket: Bagaimana untuk melaksanakan fungsi baris gilir mesej Pengenalan: Dengan perkembangan pesat Internet, komunikasi masa nyata menjadi semakin penting. Dalam kebanyakan aplikasi web, kemas kini masa nyata dan keupayaan pemberitahuan diperlukan melalui pemesejan masa nyata. JavaWebsocket ialah teknologi yang membolehkan komunikasi masa nyata dalam aplikasi web. Artikel ini akan memperkenalkan cara menggunakan JavaWebsocket untuk melaksanakan fungsi baris gilir mesej dan menyediakan contoh kod khusus. Konsep asas baris gilir mesej

Pembangunan Golang: Bina baris gilir mesej yang boleh dipercayai menggunakan NATS Pembangunan Golang: Bina baris gilir mesej yang boleh dipercayai menggunakan NATS Sep 21, 2023 am 11:21 AM

Pembangunan Golang: Menggunakan NATS untuk membina baris gilir mesej yang boleh dipercayai, contoh kod khusus diperlukan Pengenalan: Dalam sistem teragih moden, baris gilir mesej merupakan komponen penting yang digunakan untuk mengendalikan komunikasi tak segerak, memisahkan komponen sistem dan mencapai penghantaran mesej yang boleh dipercayai. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Golang dan NATS (nama penuh ialah "Sistem Pemesejan Boleh Dipercayai Berprestasi Tinggi") untuk membina baris gilir mesej yang cekap dan boleh dipercayai serta menyediakan contoh kod khusus. Apa itu NATS? NATS ialah sistem pemesejan sumber terbuka yang ringan.

Penggunaan hebat Redis dalam baris gilir mesej Penggunaan hebat Redis dalam baris gilir mesej Nov 07, 2023 pm 04:26 PM

Penggunaan Redis yang hebat dalam baris gilir mesej Baris gilir mesej ialah seni bina decoupled yang biasa digunakan untuk menyampaikan mesej tak segerak antara aplikasi. Dengan menghantar mesej ke baris gilir, pengirim boleh terus melaksanakan tugas lain tanpa menunggu balasan daripada penerima. Dan penerima boleh mendapatkan mesej daripada baris gilir dan memprosesnya pada masa yang sesuai. Redis ialah pangkalan data dalam memori sumber terbuka yang biasa digunakan dengan prestasi tinggi dan keupayaan storan berterusan. Dalam baris gilir mesej, struktur data berbilang Redis dan prestasi cemerlang menjadikannya pilihan yang ideal

Cara menangani transaksi yang diedarkan dan baris gilir mesej dalam pembangunan C# Cara menangani transaksi yang diedarkan dan baris gilir mesej dalam pembangunan C# Oct 09, 2023 am 11:36 AM

Cara mengendalikan transaksi yang diedarkan dan baris gilir mesej dalam pembangunan C# Pengenalan: Dalam sistem edaran hari ini, urus niaga dan baris gilir mesej merupakan komponen yang sangat penting. Transaksi teragih dan baris gilir mesej memainkan peranan penting dalam mengendalikan ketekalan data dan penyahgandingan sistem. Artikel ini akan memperkenalkan cara mengendalikan transaksi yang diedarkan dan baris gilir mesej dalam pembangunan C#, dan memberikan contoh kod khusus. 1. Transaksi teragih Urus niaga teragih merujuk kepada transaksi yang merangkumi pelbagai pangkalan data atau perkhidmatan. Dalam sistem teragih, cara memastikan konsistensi data telah menjadi cabaran utama. Berikut adalah dua jenis

Bagaimana untuk melaksanakan baris gilir mesej menggunakan operasi skrip Linux dalam Java Bagaimana untuk melaksanakan baris gilir mesej menggunakan operasi skrip Linux dalam Java Oct 05, 2023 am 08:09 AM

Cara menggunakan operasi skrip Linux untuk melaksanakan baris gilir mesej dalam Java memerlukan contoh kod tertentu Baris gilir mesej ialah mekanisme komunikasi biasa yang digunakan untuk memindahkan data antara proses yang berbeza. Di Java, kami boleh melaksanakan baris gilir mesej menggunakan operasi skrip Linux supaya kami boleh menghantar mesej dengan mudah atau menerima mesej daripada baris gilir. Dalam artikel ini, kami akan memperincikan cara melaksanakan baris gilir mesej menggunakan skrip Java dan Linux, dan memberikan contoh kod khusus. Untuk bermula dengan Java dan Lin

Pemahaman mendalam tentang mekanisme pelaksanaan asas baris gilir mesej Kafka Pemahaman mendalam tentang mekanisme pelaksanaan asas baris gilir mesej Kafka Feb 01, 2024 am 08:15 AM

Gambaran keseluruhan prinsip pelaksanaan asas baris gilir mesej Kafka Kafka ialah sistem baris gilir mesej yang diedarkan yang boleh mengendalikan sejumlah besar data dan mempunyai daya pemprosesan yang tinggi dan kependaman rendah. Kafka pada asalnya dibangunkan oleh LinkedIn dan kini merupakan projek peringkat tertinggi Yayasan Perisian Apache. Architecture Kafka ialah sistem teragih yang terdiri daripada berbilang pelayan. Setiap pelayan dipanggil nod, dan setiap nod adalah proses bebas. Nod disambungkan melalui rangkaian untuk membentuk kelompok. K

Bagaimana untuk melaksanakan baris gilir mesej mudah menggunakan Redis dan Golang Bagaimana untuk melaksanakan baris gilir mesej mudah menggunakan Redis dan Golang Aug 01, 2023 am 08:09 AM

Cara menggunakan Redis dan Golang untuk melaksanakan baris gilir mesej ringkas Pengenalan Baris gilir mesej digunakan secara meluas dalam pelbagai senario aplikasi, seperti komponen sistem penyahgandingan, pencukuran puncak dan pengisian lembah, komunikasi tak segerak, dsb. Artikel ini akan memperkenalkan cara menggunakan Redis dan Golang untuk melaksanakan baris gilir mesej yang mudah, membantu pembaca memahami prinsip asas dan kaedah pelaksanaan baris gilir mesej. Pengenalan kepada Redis Redis ialah pangkalan data dalam memori sumber terbuka yang ditulis dalam bahasa C, yang menyediakan storan pasangan nilai kunci dan fungsi pemprosesan untuk struktur data lain yang biasa digunakan. Redis terkenal dengan prestasi tinggi,

Cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C# Cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C# Oct 08, 2023 am 08:41 AM

Cara mengendalikan baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C# Pengenalan: Dalam pembangunan perisian moden, memandangkan saiz dan kerumitan aplikasi terus meningkat, adalah sangat penting untuk mengendalikan baris gilir mesej dengan berkesan dan melaksanakan komunikasi tak segerak. Beberapa senario aplikasi biasa termasuk penghantaran mesej antara sistem yang diedarkan, pemprosesan baris gilir tugas latar belakang, pengaturcaraan dipacu peristiwa, dsb. Artikel ini akan meneroka cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C#, dan menyediakan contoh kod khusus. 1. Baris gilir mesej Baris gilir mesej ialah mekanisme komunikasi tak segerak yang membolehkan mesej dihantar oleh

See all articles