Rumah >rangka kerja php >Laravel >Apakah giliran laravel
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.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Laravel 6, komputer Dell G3.
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;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.phpphp 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
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:
6. Penggunaan baris gilir
#在路由中简单调用 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
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=qq7 >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 pendengar
Daftar dalam appprovidersEventServiceProvider.php
TestListener.php
>Ubah suai laluan
php artisan make:event TestEvent php artisan make:listener TestListener
Jalankan laluan
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!