Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencapai Permintaan cURL Asynchronous dalam PHP?

Bagaimana untuk Mencapai Permintaan cURL Asynchronous dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 07:22:02494semak imbas

How to Achieve Asynchronous cURL Requests in PHP?

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 &amp;&amp; $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!

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