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

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

Jun 13, 2023 pm 02:23 PM
laravel Tugas Asynchronous queues

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,

        ],

    ],

],
Salin selepas log masuk

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);
Salin selepas log masuk

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));
    }
}
Salin selepas log masuk

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 
Salin selepas log masuk

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
Salin selepas log masuk

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Bagaimana untuk mendapatkan kod pengembalian semasa menghantar e -mel gagal di Laravel? Bagaimana untuk mendapatkan kod pengembalian semasa menghantar e -mel gagal di Laravel? Apr 01, 2025 pm 02:45 PM

Kaedah untuk mendapatkan kod kembali apabila menghantar e -mel Laravel gagal. Apabila menggunakan Laravel untuk membangunkan aplikasi, anda sering menghadapi situasi di mana anda perlu menghantar kod pengesahan. Dan pada hakikatnya ...

Tugas Jadual Laravel tidak dilaksanakan: Apa yang harus saya lakukan jika tugas itu tidak berjalan selepas Jadual: Jalankan Perintah? Tugas Jadual Laravel tidak dilaksanakan: Apa yang harus saya lakukan jika tugas itu tidak berjalan selepas Jadual: Jalankan Perintah? Mar 31, 2025 pm 11:24 PM

Tugas Jadual Laravel menjalankan penyelesaian masalah yang tidak responsif semasa menggunakan penjadualan tugas jadual Laravel, banyak pemaju akan menghadapi masalah ini: Jadual: Jalankan ...

Di Laravel, bagaimana menangani situasi di mana kod pengesahan gagal dihantar melalui e -mel? Di Laravel, bagaimana menangani situasi di mana kod pengesahan gagal dihantar melalui e -mel? Mar 31, 2025 pm 11:48 PM

Kaedah mengendalikan kegagalan e -mel Laravel untuk menghantar kod pengesahan adalah menggunakan Laravel ...

Bagaimana untuk melaksanakan fungsi jadual tersuai untuk mengklik untuk menambah data dalam admin dcat? Bagaimana untuk melaksanakan fungsi jadual tersuai untuk mengklik untuk menambah data dalam admin dcat? Apr 01, 2025 am 07:09 AM

Cara melaksanakan fungsi jadual klik tersuai untuk menambah data dalam dcatadmin (laravel-admin) semasa menggunakan dcat ...

Laravel - Pelayan Buang Laravel - Pelayan Buang Aug 27, 2024 am 10:51 AM

Laravel - Dump Server - Laravel dump server datang dengan versi Laravel 5.7. Versi sebelumnya tidak termasuk pelayan dump. Pelayan dump akan menjadi kebergantungan pembangunan dalam fail komposer laravel/laravel.

Perkongsian Sambungan Laravel Redis: Mengapa kaedah pilih mempengaruhi sambungan lain? Perkongsian Sambungan Laravel Redis: Mengapa kaedah pilih mempengaruhi sambungan lain? Apr 01, 2025 am 07:45 AM

Kesan perkongsian sambungan Redis dalam rangka kerja Laravel dan pilih kaedah apabila menggunakan Rangka Kerja Laravel dan Redis, pemaju mungkin menghadapi masalah: melalui konfigurasi ...

Laravel Multi-Tenant Extension Stancl/Tenancy: Bagaimana Menyesuaikan Alamat Hos Sambungan Pangkalan Data Penyewa? Laravel Multi-Tenant Extension Stancl/Tenancy: Bagaimana Menyesuaikan Alamat Hos Sambungan Pangkalan Data Penyewa? Apr 01, 2025 am 09:09 AM

Sambungan pangkalan data penyewa tersuai dalam pakej lanjutan multi-penyewa Larave Stancl/penyewaan ketika membina aplikasi multi-penyewa menggunakan pakej lanjutan multi-penyewa Larave Stancl/penyewaan, ...

Laravel - URL Tindakan Laravel - URL Tindakan Aug 27, 2024 am 10:51 AM

Laravel - URL Tindakan - Laravel 5.7 memperkenalkan ciri baharu yang dipanggil &quot;URL tindakan boleh panggil&quot;. Ciri ini serupa dengan yang terdapat dalam Laravel 5.6 yang menerima kaedah rentetan dalam tindakan. Tujuan utama sintaks baharu memperkenalkan Laravel 5.7 adalah untuk mengarahkanl

See all articles