Laravel ialah rangka kerja PHP yang sangat popular yang menyediakan banyak ciri dan alatan untuk memudahkan kerja pembangun. Satu ciri yang sangat penting ialah sokongan untuk permintaan serentak. Dalam artikel ini, kami akan meneroka prinsip, kaedah pelaksanaan dan amalan terbaik permintaan serentak dalam Laravel.
Mengapa kita memerlukan permintaan serentak?
Dalam aplikasi moden, kita selalunya perlu mendapatkan data daripada pelbagai sumber atau perkhidmatan yang berbeza. Walau bagaimanapun, jika kami meminta data ini dalam urutan, maka untuk setiap permintaan, kami perlu menunggu pelayan untuk bertindak balas, yang mungkin menyebabkan masa menunggu yang lama, mengurangkan kecekapan dan prestasi aplikasi.
Untuk menggunakan sepenuhnya sumber pelayan dan meningkatkan prestasi aplikasi, kami boleh menggunakan permintaan serentak. Menggunakan permintaan serentak, kami boleh mengeluarkan berbilang permintaan pada masa yang sama dan menunggu semua permintaan selesai sebelum meneruskan operasi seterusnya. Dengan cara ini, kami boleh mengurangkan masa menunggu permintaan dan menggunakan sepenuhnya sumber pelayan.
Bagaimanakah Laravel menyokong permintaan serentak?
Dalam rangka kerja Laravel, kami boleh menggunakan perpustakaan klien HTTP Guzzle untuk menyokong permintaan serentak. Guzzle menyediakan banyak ciri dan pilihan untuk membuat dan menghantar permintaan HTTP dengan mudah. Salah satu ciri yang sangat berguna adalah untuk menyokong permintaan tak segerak, iaitu, anda boleh terus melakukan operasi seterusnya tanpa menunggu respons pelayan selepas menghantar permintaan.
Dalam artikel ini, kami akan menggunakan Guzzle untuk melaksanakan permintaan serentak dalam Laravel. Kami akan menggunakan Laravel 8 dan PHP 7.4 untuk demonstrasi, tetapi teknik ini boleh digunakan dalam versi lain Laravel dan PHP.
Langkah Pelaksanaan
Langkah Pertama: Pasang Guzzle
Sebelum menggunakan Guzzle, kami perlu memasangnya ke dalam aplikasi kami. Guzzle boleh dipasang menggunakan pengurus pakej Komposer. Buka terminal, pergi ke direktori akar aplikasi Laravel anda, dan laksanakan arahan berikut:
composer require guzzlehttp/guzzle
Ini akan memuat turun dan memasang Guzzle. Setelah dipasang, kami boleh menggunakan Guzzle dalam kod kami untuk menghantar permintaan HTTP.
Langkah 2: Buat permintaan serentak
Sekarang kami telah memasang Guzzle, kami boleh mula membuat permintaan serentak. Mula-mula, kita perlu mencipta klien HTTP menggunakan Guzzle:
$client = new GuzzleHttpClient();
Seterusnya, kita boleh menggunakan objek $client
untuk mencipta berbilang permintaan:
$request1 = $client->requestAsync('GET', 'http://example.com/api/users'); $request2 = $client->requestAsync('GET', 'http://example.com/api/posts'); $request3 = $client->requestAsync('GET', 'http://example.com/api/comments');
Dalam contoh di atas, kami mencipta Tiga tak segerak permintaan dihantar ke pelayan secara serentak. Gunakan kaedah requestAsync
untuk membuat permintaan tak segerak dan kembalikan objek Promise dengan segera tanpa menunggu respons pelayan.
Seterusnya, kita perlu menggunakan kaedah statik kelas GuzzleHttpPromiseUtils
untuk menunggu semua permintaan selesai:
$responses = GuzzleHttpPromiseUtils::all([$request1, $request2, $request3]);
Dalam contoh di atas, kami menggunakan kaedah all
, yang menerima Array of Promise objek dan mengembalikan tatasusunan objek Promise yang mengandungi respons untuk semua permintaan. Apabila semua permintaan selesai, kami akan mendapat tatasusunan yang mengandungi semua respons.
Akhir sekali, kita boleh menggunakan kaedah wait
untuk menunggu semua permintaan selesai dan memproses setiap respons:
$results = []; foreach ($responses as $response) { $results[] = json_decode($response->getBody()->getContents()); } return $results;
Dalam contoh di atas, kami menggunakan foreach
untuk mengulang setiap respons , dan tukarkannya kepada objek PHP. Akhir sekali, kami menamatkan operasi dengan mengembalikan tatasusunan hasil.
Amalan Terbaik
Apabila menggunakan permintaan serentak, terdapat beberapa amalan terbaik yang boleh menjadikan kod kami lebih mudah dibaca, diselenggara dan cekap. Berikut ialah beberapa amalan terbaik:
requestAsync
untuk membuat permintaan tak segerak. Dengan cara ini kita boleh mengembalikan objek Promise dengan segera dan menunggu semua permintaan selesai. some
untuk menunggu sebarang bilangan permintaan selesai dan mengembalikan respons mereka. Pool
untuk mengehadkan bilangan permintaan serentak. Ringkasan
Dalam artikel ini, kami meneroka prinsip, kaedah pelaksanaan dan amalan terbaik permintaan serentak dalam Laravel. Menggunakan permintaan serentak, kami boleh menghantar berbilang permintaan pada masa yang sama, sekali gus meningkatkan prestasi dan kecekapan aplikasi kami. Menggunakan objek Guzzle dan Promise, kami boleh melaksanakan permintaan serentak dengan mudah dan mengendalikan semua respons. Jika anda sedang membangunkan aplikasi yang perlu mengambil data daripada pelbagai sumber atau perkhidmatan, Laravel Concurrent Requests mungkin merupakan penyelesaian yang baik.
Atas ialah kandungan terperinci Laravel permintaan serentak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!