Heim >Backend-Entwicklung >PHP-Tutorial >Wie erreicht man asynchrone cURL-Anfragen in PHP?

Wie erreicht man asynchrone cURL-Anfragen in PHP?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 07:22:02559Durchsuche

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>

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>

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>

Ü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!

Stellungnahme:
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