Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Queues untuk mengurus tugas tak segerak?
Dalam pembangunan aplikasi web, adalah perkara biasa untuk menangani tugasan yang berjalan lama, seperti menghantar sejumlah besar e-mel, pemprosesan imej yang kompleks atau operasi lain yang mengambil masa yang lama. Walau bagaimanapun, meletakkan tugas ini dalam kitaran permintaan aplikasi boleh mengurangkan prestasi aplikasi. Untuk memberikan pengguna pengalaman yang lebih baik, tugasan ini perlu diletakkan di latar belakang dan dilaksanakan secara tak segerak, yang memerlukan penggunaan baris gilir untuk mengurus tugas tak segerak ini.
Laravel ialah rangka kerja PHP yang sangat popular yang menyediakan sistem baris gilir yang dipanggil Laravel Queues untuk mengurus tugas tak segerak. Laravel Queues membenarkan pembangun mengasingkan tugasan yang sudah lama berjalan daripada aplikasi dan menjalankannya secara tidak segerak di latar belakang tanpa menjejaskan prestasi dan pengalaman aplikasi.
Artikel ini akan memperkenalkan konsep berkaitan, kaedah penggunaan dan kelebihan menggunakan baris gilir dalam Baris Laravel.
Baris Gilir Laravel ialah sistem baris gilir berdasarkan baris gilir mesej PHP, yang membolehkan anda meletakkan beberapa tugas ke dalam baris gilir untuk menunggu pemprosesan tak segerak. Ia menyokong banyak sistem baris gilir mesej hujung belakang yang berbeza, seperti Beanstalkd, Redis dan RabbitMQ.
Idea asas sistem baris gilir adalah untuk menangguhkan operasi tertentu sehingga kemudian. Pendekatan ini mempunyai banyak kelebihan, yang paling penting ialah anda boleh memproses tugasan di latar belakang tanpa menyekat aliran biasa aplikasi web anda. Ini memastikan aplikasi responsif dan memberikan pengalaman yang lebih baik untuk pengguna.
Mengkonfigurasi Baris Gilir dalam Laravel adalah sangat mudah. Mula-mula, anda perlu memasang Pemacu Gilir yang disediakan oleh Laravel, yang boleh dipasang melalui Komposer:
composer require illuminate/queue
Secara lalai, Laravel menyediakan tiga pemacu gilir, iaitu penyegerakan, redis dan Beanstalkd. Jika anda perlu menggunakan pemacu baris gilir pihak ketiga seperti RabbitMQ, anda juga perlu menambah perpustakaan bergantung yang berkaitan dalam fail composer.json:
"php-amqplib/php-amqplib": "^2.7"
dan kemudian konfigurasikan Pemacu Gilir, Sambungan dan Baris Gilir dalam .env
fail:
QUEUE_DRIVER=redis QUEUE_CONNECTION=redis QUEUE_PREFIX=laravel_queue_ QUEUE_REDIS_HOST=127.0.0.1 QUEUE_REDIS_PASSWORD=null QUEUE_REDIS_PORT=6379 QUEUE_REDIS_DATABASE=0
Dengan cara ini, Laravel Queues dikonfigurasikan Walaupun anda tidak pernah menggunakan sistem baris gilir sebelum ini, anda boleh bermula dengan mudah.
Cara menggunakan Laravel Queues sangat mudah. Di bawah ini kita akan belajar cara menggunakan Laravel Queues untuk mengurus tugas tak segerak.
Mula-mula, mari buat tugasan untuk menghantar e-mel. Kita boleh mencipta fail app/Jobs
baharu dalam folder SendEmailJob.php
dengan kod berikut: Kelas
<?php namespace AppJobs; use IlluminateBusQueueable; use IlluminateContractsQueueShouldQueue; use IlluminateFoundationBusDispatchable; use IlluminateQueueInteractsWithQueue; use IlluminateQueueSerializesModels; class SendEmailJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $email; /** * Create a new job instance. * * @return void */ public function __construct($email) { $this->email = $email; } /** * Execute the job. * * @return void */ public function handle() { // 发送电子邮件的代码 Mail::to($this->email)->send(new AppMailWelcomeMail()); } }
SendEmailJob
melaksanakan antara muka ShouldQueue
, jadi ia boleh diletakkan dalam baris gilir untuk pemprosesan tak segerak . Ia juga menggunakan banyak ciri yang disediakan oleh Laravel, yang menjadikan operasi lebih mudah dan fleksibel. Dalam pembina, kami menghantar alamat e-mel untuk dihantar. Dalam kaedah handle(), kami mentakrifkan logik untuk menghantar e-mel.
Seterusnya, kami datang ke pengawal dan memanggil tugas ini daripada pengawal:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use AppJobsSendEmailJob; class EmailController extends Controller { public function send(Request $request) { // 将任务添加到队列中 SendEmailJob::dispatch($request->email)->delay(now()->addMinutes(5)); return response()->json(['success' => true]); } }
Dalam pengawal, kami memanggil kaedah send()
dan menghantar e-mel untuk menghantar alamat e-mel e-mel . Kemudian kami memanggil SendEmailJob::dispatch($request->email)
untuk meletakkan tugas ini ke dalam baris gilir. Anda juga boleh memanggil kaedah delay() untuk menentukan berapa lama tugasan akan dilaksanakan Sebagai contoh, di sini kami menetapkannya kepada 5 minit.
Sekarang apabila kita memanggil kaedah send(), ia tidak menyekat pelaksanaan aplikasi web dan melaksanakan tugas secara tidak segerak dalam baris gilir. Anda boleh menggunakan perintah php artisan queue:work
untuk memulakan proses pekerja yang akan sentiasa berjalan, mendengar tugasan dalam baris gilir.
Salah satu kelebihan terbesar menggunakan sistem baris gilir ialah ia melaksanakan tugas yang berjalan lama secara tidak segerak dalam aplikasi. Ini menjadikan aplikasi lebih responsif dan memenuhi keperluan pengguna dengan lebih baik.
Satu lagi faedah penting menggunakan baris gilir ialah ia dapat mengekalkan kebolehpercayaan aplikasi dengan lebih baik. Oleh kerana sistem baris gilir adalah proses yang berasingan, sistem baris gilir boleh terus berjalan walaupun aplikasi ranap. Ini bermakna walaupun aplikasi ranap atau tamat masa semasa melaksanakan tugas, sistem baris gilir masih boleh menyelesaikan tugas itu. Ini menjadikan aplikasi anda lebih tahan terhadap kesalahan.
Akhir sekali, sistem baris gilir juga boleh meningkatkan kebolehselenggaraan kod. Merangkum operasi ke dalam tugasan boleh menjadikan kod anda lebih boleh diselenggara kerana anda boleh mengatur dan mengurus kod anda dengan lebih baik.
Laravel Queues menyediakan cara yang sangat mudah untuk mengurus tugas tak segerak. Menggunakan baris gilir boleh meningkatkan responsif, kebolehpercayaan dan kebolehselenggaraan aplikasi anda dengan ketara. Laravel juga menyediakan banyak alat mudah untuk memudahkan konfigurasi dan penggunaan baris gilir. Laravel Queues ialah pilihan yang bagus jika anda perlu mengendalikan tugasan yang berpanjangan.
Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Queues untuk mengurus tugas tak segerak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!