Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich gleichzeitige cURL-Anfragen asynchron in PHP ausführen?

Wie kann ich gleichzeitige cURL-Anfragen asynchron in PHP ausführen?

DDD
DDDOriginal
2024-11-02 05:43:02844Durchsuche

How Can I Execute Concurrent cURL Requests Asynchronously in PHP?

Asynchrone Ausführung gleichzeitiger cURL-Anfragen in PHP

Einführung

Die sequentielle Ausführung von Curl-Anfragen kann zu Leistungsproblemen führen, insbesondere wenn es um mehrere Ressourcen geht. intensive Anfragen. In diesem Artikel werden asynchrone Ausführungstechniken zur Optimierung der Bearbeitung von Curl-Anfragen in PHP untersucht.

Asynchrones cURL

PHP bietet integrierte Funktionen für die asynchrone cURL-Ausführung mithilfe von curl_multi_*-Befehlen. Hier ist eine überarbeitete Version Ihres Codes, die diesen Ansatz verwendet:

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

Dieser Ansatz verwendet curl_multi_exec(), um beide Curl-Handles gleichzeitig auszuführen.

pThreads

Eine weitere Option ist pThreads , eine Threading-Bibliothek für PHP. Hier ist ein Beispiel für die Verwendung dieser Bibliothek:

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

Dieser Code erstellt zwei Thread-Objekte und startet sie mit der start()-Methode. Jeder Thread führt seine eigene cURL-Anfrage aus.

Ressourcen

  • [PHP-Handbuch – cURL-Multipart-Schnittstelle](https://www.php.net/manual/en/function.curl -multi-init.php)
  • [PHP-Handbuch – Thread-Klasse](https://www.php.net/manual/en/class.thread.php)

Das obige ist der detaillierte Inhalt vonWie kann ich gleichzeitige cURL-Anfragen asynchron in PHP ausführen?. 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