Bagaimana untuk Mencapai Permintaan cURL Asynchronous dalam PHP?

Mary-Kate Olsen
Lepaskan: 2024-11-03 07:22:02
asal
493 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan