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 && $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!