Solicitud de curl asíncrona en PHP
La ejecución de solicitudes de publicación de curl de forma asincrónica en PHP puede mejorar el rendimiento y evitar posibles retrasos. Así es como puedes lograr esto usando diferentes métodos:
Uso de funciones de cURL asíncronas
Al usar curl_multi_*, puedes ejecutar múltiples solicitudes de cURL simultáneamente. Aquí hay un código de ejemplo:
$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);
Uso de pThreads
pThreads es una biblioteca de subprocesos para PHP. Así es como puede usarlo para solicitudes curl asíncronas:
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();
Ambos métodos permiten la ejecución asincrónica de solicitudes curl, lo que permite un mejor rendimiento y un manejo eficiente de tareas paralelas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3