Permintaan curl tak segerak dalam PHP
Melaksanakan berbilang permintaan curl secara serentak boleh menjadi cabaran dalam PHP. Dalam artikel ini, kami akan meneroka pendekatan yang berbeza untuk mencapai pelaksanaan tak segerak menggunakan fungsi terbina dalam dan pustaka luaran.
cURL multi-threading
Fungsi curl_multi_* PHP membenarkan untuk pelaksanaan tak segerak bagi berbilang permintaan cURL. Berikut ialah contoh:
<code class="php">curl_multi_init(); $mh = curl_multi_init(); $ch1 = curl_init(); curl_setopt($ch1, CURLOPT_URL, 'http://example.com/endpoint'); curl_multi_add_handle($mh, $ch1); $ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, 'http://example.com/endpoint2'); curl_multi_add_handle($mh, $ch2); $active = null; do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } curl_multi_remove_handle($mh, $ch1); curl_multi_remove_handle($mh, $ch2); curl_multi_close($mh);</code>
pthreads
Pustaka pthreads membenarkan pengaturcaraan berbilang benang dalam PHP. Menggunakan pthreads, permintaan curl tak segerak boleh dicapai seperti ini:
<code class="php">class RequestThread extends Thread { public function run() { $ch = curl_init(); // ... set cURL options here curl_exec($ch); curl_close($ch); } } $thread = new RequestThread(); $thread->start();</code>
Pelaksanaan selari menggunakan perpustakaan
Terdapat juga perpustakaan yang direka khusus untuk pelaksanaan selari dalam PHP, seperti sebagai fungsi selari dan permintaan selari. Berikut ialah contoh menggunakan perpustakaan permintaan selari:
<code class="php">use Parallel\{Task, Runtime}; $runtime = new Runtime; $tasks = [ new Task(function () { // ... cURL request 1 }), new Task(function () { // ... cURL request 2 }), ]; $runtime->run($tasks);</code>
Pertimbangan
Apabila melaksanakan permintaan tak segerak, adalah penting untuk mempertimbangkan had sumber pelayan dan potensi kesesakan. Ia juga penting untuk mengendalikan ralat dan pengecualian yang mungkin berlaku semasa pelaksanaan.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Permintaan cURL Asynchronous dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!