Asynchrone Curl-Anfrage in PHP
Die asynchrone Ausführung von Curl-Post-Anfragen in PHP kann die Leistung verbessern und mögliche Verzögerungen verhindern. So können Sie dies mit verschiedenen Methoden erreichen:
Verwenden von asynchronen cURL-Funktionen
Bei Verwendung von curl_multi_* können Sie mehrere cURL-Anfragen gleichzeitig ausführen. Hier ist ein Beispielcode:
$curl = curl_init($request);
curl_setopt($curl, CURLOPT_URL, $url_onfleet);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_USERPWD, $api_onfleet);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, '{"destination":{"address":{"unparsed":"'.$pickup_address.'"},"notes":"'.$comments.'"},"recipients":[{"name":"'.$name.'","phone":" 61'.$phone.'","notes":"Number of riders: '.$riders.'"}],"completeBefore":'.$timestamp.',"pickupTask":"yes","autoAssign":{"mode":"distance"}}');
$mh = curl_multi_init();
curl_multi_add_handle($mh,$curl);
$active = null;
//execute the handles
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);
}
}
//close the handles
curl_multi_remove_handle($mh, $curl);
curl_multi_close($mh);
Verwenden von pThreads
pThreads ist eine Threading-Bibliothek für PHP. So können Sie es für asynchrone Curl-Anfragen verwenden:
class Request1 extends Thread {
public function run() {
// Execute the first cURL request here
}
}
class Request2 extends Thread {
public function run() {
// Execute the second cURL request here
}
}
$req1 = new Request1();
$req1->start();
$req2 = new Request2();
$req2->start();
Beide Methoden ermöglichen die asynchrone Ausführung von Curl-Anfragen und ermöglichen so eine bessere Leistung und eine effiziente Abwicklung paralleler Aufgaben.
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