Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Melaksanakan Permintaan cURL Serentak Secara Asynchronous dalam PHP?

Bagaimanakah Saya Boleh Melaksanakan Permintaan cURL Serentak Secara Asynchronous dalam PHP?

DDD
DDDasal
2024-11-02 05:43:02844semak imbas

How Can I Execute Concurrent cURL Requests Asynchronously in PHP?

Pelaksanaan Asynchronous Permintaan cURL Serentak dalam PHP

Pengenalan

Melaksanakan permintaan curl secara berurutan boleh mengakibatkan masalah prestasi, terutamanya apabila berurusan dengan pelbagai sumber- permintaan intensif. Artikel ini meneroka teknik pelaksanaan tak segerak untuk mengoptimumkan pengendalian permintaan curl dalam PHP.

CURL tak segerak

PHP menyediakan fungsi terbina dalam untuk pelaksanaan cURL tak segerak menggunakan arahan curl_multi_*. Berikut ialah versi semakan kod anda menggunakan pendekatan ini:

<code class="php">$mh = curl_multi_init();
curl_multi_add_handle($mh, $session); // session for the first request
curl_multi_add_handle($mh, $ch); // ch for the second request

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, $session);
curl_multi_remove_handle($mh, $ch);
curl_multi_close($mh);</code>

Pendekatan ini menggunakan curl_multi_exec() untuk melaksanakan kedua-dua pemegang curl secara serentak.

pThreads

Pilihan lain ialah pThreads , perpustakaan threading untuk PHP. Berikut ialah contoh penggunaan pustaka ini:

<code class="php">class Request1 extends Thread {
    // ... your implementation
}

class Request2 extends Thread {
    // ... your implementation
}

$req1 = new Request1();
$req1->start();
$req2 = new Request2();
$req2->start();</code>

Kod ini mencipta dua objek benang dan memulakannya menggunakan kaedah start(). Setiap urutan melaksanakan permintaan cURLnya sendiri.

Sumber

  • [Manual PHP - Antara Muka Berbilang Bahagian cURL](https://www.php.net/manual/en/function.curl -multi-init.php)
  • [Manual PHP - Kelas Thread](https://www.php.net/manual/en/class.thread.php)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Permintaan cURL Serentak Secara 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