Rumah >rangka kerja php >Laravel >Apakah giliran laravel

Apakah giliran laravel

青灯夜游
青灯夜游asal
2022-02-14 15:25:423356semak imbas

Dalam laravel, baris gilir ialah jadual linear dengan operasi terhad Ia hanya membenarkan operasi pemadaman di hujung hadapan jadual (kepala baris gilir) dan operasi sisipan di hujung belakang jadual (ekor baris gilir). ; Melalui baris gilir, pembangun boleh menangguhkan pemprosesan tugas yang memakan masa, yang boleh meningkatkan kelajuan tindak balas permintaan web.

Apakah giliran laravel

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Laravel 6, komputer Dell G3.

Penggunaan baris gilir dalam laravel

1. Apakah itu baris gilir

Barisan Ia adalah jadual linear dengan operasi terhad Ciri khasnya ialah ia hanya membenarkan operasi pemadaman di hujung hadapan jadual dan operasi sisipan di hujung belakang jadual. Penghujung yang melakukan operasi sisipan dipanggil ekor baris gilir, dan penghujung yang melakukan operasi pemadaman dipanggil ketua baris gilir.

Baris gilir membolehkan anda menangguhkan tugasan yang memakan masa, seperti menghantar e-mel, ke tarikh yang akan datang. Menangguhkan tugas yang memakan masa ini boleh meningkatkan kelajuan tindak balas permintaan web dengan ketara.

Kebaikan

  • Penyahgandingan: Barisan mesej boleh memisahkan sistem dan meningkatkan kelajuan tindak balas diagregatkan ke dalam dan terbuka ke luar;

  • Asynchronous: Baris gilir mesej boleh menanggalkan fungsi tak segerak sistem, mengurangkan gandingan berfungsi dan meningkatkan kecekapan pembangunan; >

    Keratan puncak: Baris gilir mesej boleh menggunting puncak dan aliran untuk memastikan operasi pengguna hiliran yang stabil;
3

Fail konfigurasi baris gilir disimpan dalam config/queue.php. Dalam fail ini, anda boleh menemui konfigurasi sambungan untuk setiap pemacu baris gilir yang disertakan dalam rangka kerja, yang termasuk pangkalan data, Beanstalkd, Amazon SQS, Redis dan pemacu penyegerakan (segerak - untuk kegunaan tempatan). Redis digunakan sebagai pemacu di sini, dan Redis serta sambungan yang berkaitan perlu dipasang.

4. Tugas

Kita perlu meletakkan sesuatu ke dalam baris gilir, kita boleh memanggilnya sebagai tugas. Mencipta tugasan dalam rangka kerja Laravel memberikan kita arahan berikut:

TestJob.php

php artisan make:job TestJob

5 🎜 >

namespace App\Jobs;use Illuminate\Bus\Queueable;use Illuminate\Contracts\Queue\ShouldBeUnique;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Queue\SerializesModels;use Illuminate\Support\Facades\DB;use Symfony\Polyfill\Intl\Idn\Info;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()
    {//        \Log::info('hhh');
        DB::connection('test')
            ->table('master')
            ->insert([
                'name'=>'小白',
                'email'=>'123@qq.com'
            ]);
    }}

Setelah anda menulis kelas tugasan, anda boleh menghantarnya menggunakan kaedah penghantaran tugas itu sendiri. Parameter yang dihantar kepada kaedah penghantaran akan dihantar kepada pembina tugas. onQueue:   Nyatakan baris gilir; onConnection:  Nyatakan sambungan; 🎜>

Jalankan laluan ini dua kali dan anda dapat melihat bahawa baris gilir bernama qq dijana Kemudian kami menggunakan baris gilir




6. Penggunaan baris gilir

Laravel mempunyai pemproses baris gilir untuk memproses tugasan yang baru ditolak ke dalam baris gilir. Mulakan pemproses baris gilir dengan baris perintah Artisan: kerja. Perlu diingat bahawa sebaik sahaja arahan baris gilir:kerja dimulakan, ia akan terus berjalan sehingga ia dihentikan secara manual atau anda menutup terminal anda:
#在路由中简单调用
Route::get('queue',function(){
        \App\Jobs\TestJob::dispatch();
//        \App\Jobs\TestJob::dispatch()->onQueue('qq');
    });

php artisan queue:work

php artisan queue: berfungsi --sekali Tambah parameter dan gunakan baris gilir yang ditentukan Apakah giliran laravel

Anda boleh melihat bahawa dua keping data baharu ditambahkan pada pangkalan data dan data dalam redis digunakan


Kami melaksanakan penghalaan sekali lagi
#消费qq队列
php artisan queue:work --queue=qq

Apakah giliran laravel

7 >

Apakah giliran laravel

Baris gilir biasanya digunakan untuk mengendalikan tugasan tertangguh dan acara diproses mengikut logik perniagaan. Pencetus peristiwa dalam Laravel diedarkan kepada baris gilir untuk pemprosesan perniagaan tak segerak, supaya anda boleh bertindak balas dengan cepat tanpa perlu menunggu hasil pelaksanaan dalam masa nyata sebelum memberikan mesej segera kepada pengguna.

Jika kami perlu menyimpan perniagaan dalam acara ke dalam baris gilir, kami tidak perlu mengagihkan semula baris gilir Kami boleh melaksanakan antara muka IlluminateContractsQueueShouldQueue dalam pendengar yang sepadan.

Buat acara dan pendengarApakah giliran laravel

Daftar dalam appprovidersEventServiceProvider.php

TestListener.php


>Ubah suai laluan

php artisan make:event TestEvent
php artisan make:listener TestListener

Jalankan laluan

Apakah giliran laravel

Baris gilir penggunaan

namespace App\Listeners;

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\DB;

class TestListener implements ShouldQueue
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  object  $event
     * @return void
     */
    public function handle()
    {
        DB::connection('test')
            ->table('master')
            ->insert([
                'name'=>'小黑',
                'email'=>'234@qq.com'
            ]);
    }
}

Route::get('queue',function(){
        //\App\Jobs\TestJob::dispatch();
        //指定队列名称
        //\App\Jobs\TestJob::dispatch()->onQueue('qq');
        return event(new \App\Events\TestEvent());
    });

[Cadangan berkaitan: tutorial video laravel]

Atas ialah kandungan terperinci Apakah giliran 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
Artikel sebelumnya:apa itu laravel ormArtikel seterusnya:apa itu laravel orm