Rumah  >  Artikel  >  rangka kerja php  >  Laravel permintaan serentak

Laravel permintaan serentak

PHPz
PHPzasal
2023-05-26 19:11:051198semak imbas

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:

  1. Gunakan kaedah requestAsync untuk membuat permintaan tak segerak. Dengan cara ini kita boleh mengembalikan objek Promise dengan segera dan menunggu semua permintaan selesai.
  2. Jika kami hanya memerlukan respons daripada beberapa permintaan, kami boleh menggunakan kaedah some untuk menunggu sebarang bilangan permintaan selesai dan mengembalikan respons mereka.
  3. Apabila menggunakan berbilang permintaan tak segerak, adalah disyorkan untuk mengehadkan bilangan permintaan serentak. Terlalu banyak permintaan serentak boleh menyebabkan beban pelayan yang berlebihan, mengurangkan prestasi aplikasi. Anda boleh menggunakan kelas Pool untuk mengehadkan bilangan permintaan serentak.
  4. Jika kami mengendalikan sejumlah besar permintaan tak segerak, kami boleh menggunakan coroutine untuk meningkatkan prestasi kod. Coroutine boleh menggunakan sepenuhnya sumber pelayan dan mengurangkan bilangan suis konteks.

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!

Kenyataan:
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
Artikel sebelumnya:laravel menanyakan nilaiArtikel seterusnya:laravel menanyakan nilai