Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Queues untuk mengendalikan tugas tak segerak?

Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Queues untuk mengendalikan tugas tak segerak?

WBOY
WBOYasal
2023-06-13 14:23:361294semak imbas

Pembangunan Laravel: Bagaimana untuk menggunakan Baris Laravel untuk mengendalikan tugas tak segerak?

Laravel ialah rangka kerja PHP popular yang ciri-cirinya yang berkuasa menjadikannya pilihan terbaik untuk pembangunan aplikasi web. Menggunakan Laravel, anda boleh mencipta aplikasi web yang kompleks dengan cepat dan mudah. Dalam artikel ini, kita akan membincangkan penggunaan Laravel Queues, satu ciri yang membantu dalam mengendalikan tugas tak segerak.

Konsep tugas tak segerak

Apabila pengguna melakukan tugasan dalam aplikasi web, dia perlu menunggu tugasan selesai sebelum mendapat keputusan. Ini ialah tugas penyegerakan. Tetapi bagaimana jika kita mahu memprosesnya tanpa pengguna perlu menunggu tugasan selesai? Ini adalah tugas tak segerak!

Tugas tak segerak tidak menjejaskan prestasi respons masa nyata pengguna kerana mereka tidak menunggu tugasan selesai sebelum mengembalikan hasil. Sebaliknya, tugasan ini dimasukkan ke dalam baris gilir dan diproses satu demi satu di latar belakang. Sebagai contoh, pengguna memuat naik fail ke pelayan. Jika muat naik mengambil masa terlalu lama kerana fail terlalu besar, pengguna mungkin menjadi tidak sabar dan membatalkan muat naik. Pada ketika ini, menggunakan tugas tak segerak akan membantu mengelakkan churn pengguna.

Baris Gilir Laravel ialah sebahagian daripada rangka kerja Laravel yang membantu dalam mengendalikan tugas tak segerak.

Membina Baris Laravel

Langkah pertama dalam menggunakan baris gilir dalam Laravel ialah memberitahu komputer baris gilir mana yang perlu diproses. Dalam fail Queue.php anda boleh mentakrifkan baris gilir dan tentukan pemacu yang digunakan oleh baris gilir. Pemacu boleh menjadi pemacu tempatan, pemacu pangkalan data, pemacu Redis, pemacu Beanstalk, dll. Berikut ialah contoh:

'connection' => env('QUEUE_DRIVER', 'sync'),

'driver' => env('QUEUE_DRIVER', 'sync'),

'queue' => [

    'default' => [

        'connection' => 'default',

        'queue' => 'default',

        'retry_after' => 90,

        'backoff' => [

            'strategy' => 'exponential',

            'max_attempts' => 3,

            'delay' => 1000,

        ],

    ],

],

Contoh kod di atas menunjukkan bahawa baris gilir menggunakan pemacu 'penyegerakan' secara lalai. Walau bagaimanapun, anda boleh menentukan pemacu yang berbeza dalam fail .env.

Tambah Gilir

Sekarang kita telah menentukan baris gilir dan pemacunya, kita perlu menambah tugasan pada baris gilir untuk diproses. Dalam rangka kerja Laravel, tugasan ditambahkan pada baris gilir menggunakan kaedah dispatch(). Sebagai contoh, kami menggunakan kod berikut untuk menambah tugasan pada baris gilir:

ProcessPodcasts::dispatch($podcast);

Dalam kod di atas, ProcessPodcasts ialah tugas yang ingin kami laksanakan dan $podcast ialah parameter yang dihantar kepada tugas itu.

Buat Tugasan

Sekarang, mari kita buat tugasan tak segerak menggunakan Laravel. Untuk melakukan ini, kami akan mencipta fail Job.php baharu dalam direktori app/Jobs. Berikut ialah contoh kod:

<?php

namespace AppJobs;

use AppMailSendWelcomeEmail;
use AppUser;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;
use IlluminateSupportFacadesMail;

class SendWelcomeEmailJob implements ShouldQueue
{
    // Traits used by the class
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $user;

    /**
     * Create a new job instance.
     *
     * @param User $user
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->user->email)->send(new SendWelcomeEmail($this->user));
    }
}

Kod di atas mencipta tugas tak segerak dipanggil SendWelcomeEmailJob. Tugasan ini menghantar e-mel kepada pengguna baharu. Oleh kerana tugasan berada dalam baris gilir, pengguna tidak perlu menunggu e-mel dihantar untuk diselesaikan.

Barisan Pelaksanaan

Dengan operasi di atas, kami telah mencipta tugasan dan menambahkannya pada baris gilir. Walau bagaimanapun, kita perlu melaksanakan tugas dalam baris gilir. Terdapat beberapa cara untuk melaksanakan baris gilir, berikut ialah contoh kod:

php artisan queue:work 

Dalam kod di atas, kami melaksanakan baris gilir menggunakan perintah baris gilir: kerja dalam Laravel CLI. Perintah ini akan terus dilaksanakan sehingga tiada lagi tugas untuk diproses.

Terdapat cara lain untuk melaksanakan baris gilir, seperti melaksanakan baris gilir dengan bantuan penyelia. Penyelia ialah alat pengurusan proses yang membolehkan kami mengurus aplikasi Laravel di latar belakang. Untuk melaksanakan baris gilir dengan bantuan penyelia, ikuti langkah berikut:

  1. Pasang penyelia (sila rujuk penggunaan penyelia).
  2. Buat fail baru queue-worker.conf yang terletak dalam direktori /etc/supervisor/conf.d.
  3. Masukkan kod berikut:
[program:queue-worker]

process_name=%(program_name)s_%(process_num)02d

command=php /path/to/artisan queue:work 

autostart=true

autorestart=true

user=user

numprocs=1

redirect_stderr=true

stdout_logfile=/path/to/your/logs/queue-worker.log

Kod di atas mencipta pekerja baris gilir untuk penyelia. Apabila penyelia bermula, program ini akan mula memproses baris gilir dan melaksanakan di latar belakang.

Kesimpulan

Dalam artikel ini, kami mempelajari cara menggunakan Barisan Laravel untuk pemprosesan tugas tak segerak. Kami mempelajari tentang konsep Baris Gilir dan menentukan baris gilir dan pemandu baharu. Kami juga mencipta tugasan tak segerak dan melihat cara melaksanakannya menggunakan Baris Gilir Laravel. Secara keseluruhannya, Laravel Queues ialah komponen yang sangat berguna dalam pembangunan Laravel, yang boleh membantu kami mengendalikan tugas tak segerak dengan mudah.

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Queues untuk mengendalikan tugas tak segerak?. 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