Rumah > Artikel > rangka kerja php > Bagaimana untuk menggunakan baris gilir untuk melaksanakan tugas tak segerak dalam ThinkPHP6?
Dengan pembangunan berterusan aplikasi Internet dan sistem maklumat, banyak perniagaan perlu menggunakan tugas tak segerak untuk memproses operasi dengan logik yang kompleks atau keperluan prestasi tinggi. Walau bagaimanapun, kaedah pemprosesan segerak tradisional akan membawa tekanan dan beban yang lebih besar kepada prestasi sistem Untuk menyelesaikan masalah ini, kami boleh melaksanakan pemprosesan tugas tak segerak dengan menggunakan baris gilir mesej. Artikel ini akan memperkenalkan cara menggunakan baris gilir untuk melaksanakan tugas tak segerak dalam rangka kerja ThinkPHP6.
1. Pemasangan dan konfigurasi
1.1 Muat turun dan pasang sambungan
Dalam ThinkPHP6, kami boleh menggunakan komponen Queue untuk melaksanakan pemprosesan baris gilir. Pasang dengan menambah kebergantungan dalam fail composer.json seperti berikut:
composer require topthink/think-queue
1.2 Fail Konfigurasi
Selepas pemasangan berjaya, kami perlu memasang Tambah fail konfigurasi dan membuat konfigurasi yang berkaitan. Cipta fail queue.php baharu dalam direktori konfigurasi dan tambahkan item konfigurasi berikut di dalamnya:
return [ 'default' => env('queue.driver', 'sync'), 'connections' => [ 'sync' => [ 'driver' => 'sync', ], 'redis' => [ 'driver' => 'redis', 'queue' => 'default', 'connection' => 'default', 'retry_after' => 90, 'block_for' => null, ], ], ];
Ini terutamanya untuk mengkonfigurasi pemacu lalai dan kaedah sambungan bagi baris gilir. Antaranya, kami menyokong dua kaedah pemanduan: penyegerakan (sync) dan Redis (redis). Redis ialah pangkalan data dalam memori teragih yang boleh menyokong pelbagai struktur data, terutamanya pasangan nilai kunci, senarai, set, cincang dan struktur data lain. Dalam komponen Queue ThinkPHP6, kami juga boleh menggunakan pemacu Redis sebagai kaedah penyimpanan baris gilir mesej.
Selain itu, kami juga boleh melakukan beberapa konfigurasi lain pada baris gilir, seperti nama baris gilir (gilir), nama sambungan (sambungan), masa cuba semula (cuba_selepas), dll.
Item konfigurasi di atas juga boleh dikonfigurasikan dalam fail konfigurasi aplikasi (config/app.php) atau fail konfigurasi persekitaran.
2. Cipta tugas baris gilir
Dalam kes ThinkPHP 6, kita boleh menggunakan mod kilang untuk mencipta tugas baris gilir, dan pada masa yang sama, kita boleh melaksanakan logik tugasan tertentu dengan mewarisi Kelas kerja.
2.1 Cipta kilang
Kami boleh mencipta fail Job.php dalam direktori app/job dan mentakrifkan kelas kilang untuk baris gilir mesej, di mana kaedah mengendalikan untuk memproses mesej baris gilir tertentu dilaksanakan. Pelaksanaan khusus adalah seperti berikut:
namespace appjob; use thinkqueueJob; class MyJob { public function handle(Job $job, $data) { //... 具体任务处理逻辑 //... 执行成功,删除该消息 $job->delete(); } }
Di sini kami mentakrifkan kelas MyJob, di mana kaedah pemegang bertanggungjawab untuk pemprosesan logik mesej baris gilir tertentu. Apabila pelaksanaan berjaya, kita boleh memadamkan mesej baris gilir ini dengan memanggil kaedah $job->delete().
2.2 Membuat tugasan
Kita boleh mencipta tugasan yang perlu kita proses dengan mewarisi kelas Pekerjaan. Sebagai contoh, kita boleh membuat kelas SendEmail dan menggunakan tugas ini untuk menghantar e-mel.
namespace appjob; use thinkqueueJob; class SendEmail extends Job { public function handle() { // ...具体的邮件发送逻辑 // ...任务执行完成,删除该消息 $this->delete(); } }
Dalam kaedah pemegang, kita boleh menulis logik penghantaran e-mel tertentu. Pada masa yang sama, kita juga boleh memanggil kaedah padam pada penghujung untuk memadam mesej baris gilir yang telah berjaya dilaksanakan.
3. Tambahkan tugas pada baris gilir
Selepas kami mencipta tugas baris gilir, kami perlu menambahkannya pada baris gilir mesej untuk pemprosesan tak segerak berikutnya. Dalam rangka kerja ThinkPHP6, kami boleh menggunakan penyedia perkhidmatan baris gilir untuk menambah tugasan.
app('queue')->push(new SendEmail());
Di sini, kami mendapat contoh perkhidmatan baris gilir dengan memanggil $app['queue'] dan menambah tugas SendEmail pada baris gilir melalui kaedah tolak.
4. Pemantauan dan pelaksanaan tugas
Selepas tugasan ditambahkan pada baris gilir, kita perlu dapat memahami status tugasan dalam masa dan memprosesnya tepat pada masanya. Untuk keperluan ini, kami boleh menggunakan alat Artisan Console ThinkPHP6. Ia adalah sambungan berdasarkan komponen Symfony Console dan membolehkan kami melaksanakan beberapa arahan tertentu melalui konsol.
4.1 Mulakan pemantauan baris gilir
Kita boleh memulakan konsol dan melaksanakan arahan berikut terus pada baris arahan:
php think queue:work --daemon --queue default
Antaranya, --queue menentukan nama baris gilir, yang boleh disesuaikan , --daemon bermaksud berjalan di latar belakang.
Selepas arahan ini dilaksanakan, pemantauan baris gilir akan dimulakan dan mesej dalam baris gilir akan diproses satu demi satu.
4.2 Memantau status pelaksanaan tugas
Semasa pelaksanaan baris gilir, kita boleh menggunakan monitor untuk melihat status pelaksanaan baris gilir. Jalankan arahan berikut pada baris arahan:
php think queue:listen --queue default --tries=3
Antaranya, --queue menentukan nama baris gilir, dan --tries menentukan bilangan percubaan semula tugas.
Selepas pelaksanaan, status dan status pelaksanaan khusus baris gilir mesej semasa akan dikeluarkan. Kami boleh memantau dan memproses status tugasan tepat pada masanya berdasarkan maklumat output.
5. Ringkasan
Dengan menggunakan baris gilir untuk melaksanakan tugas tak segerak, kami boleh meningkatkan prestasi dan kestabilan sistem dengan berkesan. Artikel ini terutamanya memperkenalkan cara menggunakan baris gilir untuk melaksanakan tugas tak segerak dalam ThinkPHP6, dan memberikan penjelasan terperinci tentang konfigurasi baris gilir, penciptaan dan penambahan tugas, pemantauan dan pelaksanaan baris gilir. Saya harap ia akan membantu semua orang apabila mengendalikan tugas tak segerak dalam aplikasi praktikal.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan baris gilir untuk melaksanakan tugas tak segerak dalam ThinkPHP6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!