Rumah  >  Artikel  >  rangka kerja php  >  Sebuah artikel membincangkan kaedah pelaksanaan baris gilir mesej Laravel

Sebuah artikel membincangkan kaedah pelaksanaan baris gilir mesej Laravel

PHPz
PHPzasal
2023-04-06 16:45:391372semak imbas

Baris gilir mesej Laravel ialah komponen aplikasi berkuasa yang boleh mengendalikan tugas yang memakan masa dengan berjalan secara tidak segerak. Ia membolehkan anda menangguhkan tugas dengan mudah supaya aplikasi web anda boleh bertindak balas terhadap permintaan dengan cepat. Dalam artikel ini, kami akan meneroka pelaksanaan baris gilir mesej Laravel.

Tetapan baris gilir mesej Laravel

Mula-mula, anda perlu mengkonfigurasi baris gilir mesej dalam projek Laravel anda. Prosesnya sangat mudah. Hanya tentukan pemacu baris gilir dalam fail .env untuk mendayakan fungsi baris gilir mesej. Dalam Laravel, pemacu baris gilir yang disokong ialah:

  • pangkalan data
  • segerak
  • beanstalkd
  • redis
  • SQS

Anda boleh memilih pemandu gilir berdasarkan keperluan anda. Sebagai contoh, apabila menggunakan Redis sebagai pemacu baris gilir, anda perlu menggunakan pelayan Redis. Anda juga perlu menentukan maklumat berkaitan baris gilir lain dalam fail config/queue.php.

Contoh berikut ialah contoh konfigurasi menggunakan Redis sebagai pemacu baris gilir:

'connections' => [
    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => env('REDIS_QUEUE', 'default'),
        'retry_after' => 90,
        'block_for' => null,
    ],
]

Buat kelas tugas

Dalam Laravel, kelas tugas ialah kelas tugas yang mengendalikan kelas PHP tugas sebenar. Kelas ini harus melaksanakan antara muka IlluminateContractsQueueShouldQueue untuk menunjukkan bahawa kelas adalah tugas beratur. Apabila pengendali tugasan mengalih keluar tugasan daripada baris gilir, aplikasi membuat instantiate kelas tugasan dan memanggil kaedah pemegang.

Contoh tugasan diberikan di bawah:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

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

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // 任务逻辑
    }
}

Hantar tugasan ke baris gilir

Setelah anda mengkonfigurasi dan mencipta kelas tugasan, anda perlu menghantar tugasan ke tengah barisan. Ini boleh dilakukan melalui kaedah penghantaran yang disediakan oleh Laravel. Kaedah ini menerima contoh tugas yang anda buat sebagai satu-satunya parameternya.

Contoh menolak tugas ke baris gilir diberikan di bawah:

dispatch(new TestJob);

Menggunakan proses queue_worker

Setelah anda menghantar tugasan ke baris gilir, anda boleh Gunakan proses pekerja baris gilir Laravel untuk mengendalikannya. Pekerja baris gilir ialah proses berpanjangan yang mendengar baris gilir dan melaksanakan tugas. Anda boleh menggunakan perintah Artisan berikut untuk memulakan pekerja baris gilir:

php artisan queue:work

Arahan ini akan mendengar baris gilir lalai untuk memproses tugas tertunda. Jika anda menggunakan pemacu baris gilir lain dan telah menentukan baris gilir lain dalam fail config/queue.php, gunakan nama baris gilir sebagai hujah baris arahan:

php artisan queue:work redis --queue=my-queue

Kesimpulan

Baris Gilir Laravel ialah komponen berkuasa dalam rangka kerja Laravel. Ia membolehkan anda menghantar tugasan ke baris gilir dengan mudah dan menjalankannya secara tidak segerak di latar belakang. Proses pekerja baris gilir sentiasa memantau baris gilir dan menyerahkan tugas kepada pengendali tugas. Dengan menggunakan fungsi baris gilir Laravel, anda boleh meningkatkan prestasi dan ketersediaan aplikasi anda dengan sangat baik.

Atas ialah kandungan terperinci Sebuah artikel membincangkan kaedah pelaksanaan baris gilir mesej Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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