Wie erreicht man asynchrone cURL-Anfragen in PHP?

Mary-Kate Olsen
Freigeben: 2024-11-03 07:22:02
Original
494 Leute haben es durchsucht

How to Achieve Asynchronous cURL Requests in PHP?

Asynchrone Curl-Anfrage in PHP

Das gleichzeitige Ausführen mehrerer Curl-Anfragen kann in PHP eine Herausforderung sein. In diesem Artikel untersuchen wir verschiedene Ansätze, um mithilfe integrierter Funktionen und externer Bibliotheken eine asynchrone Ausführung zu erreichen.

cURL-Multithreading

Die Funktionen „curl_multi_*“ von PHP ermöglichen dies zur asynchronen Ausführung mehrerer cURL-Anfragen. Hier ist ein Beispiel:

<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>
Nach dem Login kopieren

pthreads

Die pthreads-Bibliothek ermöglicht die Multithread-Programmierung in PHP. Mit pthreads können asynchrone Curl-Anfragen wie folgt erreicht werden:

<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>
Nach dem Login kopieren

Parallele Ausführung mit Bibliothek

Es gibt auch Bibliotheken, die speziell für die parallele Ausführung in PHP entwickelt wurden, wie z als Parallelfunktionen und Parallelanforderung. Hier ist ein Beispiel für die Verwendung der Parallel-Request-Bibliothek:

<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>
Nach dem Login kopieren

Überlegungen

Bei der Ausführung asynchroner Anfragen ist es wichtig, die Ressourcenbeschränkungen des Servers und mögliche Engpässe zu berücksichtigen. Es ist auch wichtig, Fehler und Ausnahmen zu behandeln, die während der Ausführung auftreten können.

Das obige ist der detaillierte Inhalt vonWie erreicht man asynchrone cURL-Anfragen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage