„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erreicht man asynchrone cURL-Anfragen in PHP?

Wie erreicht man asynchrone cURL-Anfragen in PHP?

Veröffentlicht am 11.11.2024
Durchsuche:131

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:

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

pthreads

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

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();

Parallele Ausführung mit Bibliothek

Es gibt auch Bibliotheken, die speziell für die parallele Ausführung in PHP entwickelt wurden, wie etwa parallel-functions und parallel- Anfrage. Hier ist ein Beispiel für die Verwendung der Parallel-Request-Bibliothek:

use Parallel\{Task, Runtime};

$runtime = new Runtime;

$tasks = [
    new Task(function () {
        // ... cURL request 1
    }),
    new Task(function () {
        // ... cURL request 2
    }),
];

$runtime->run($tasks);

Überlegungen

Bei der Ausführung asynchroner Anforderungen ist es wichtig, die Ressourcengrenzen 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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3