Estoy construyendo una aplicación que en cierto punto cursa algunos contenidos desde una URL externa. Hasta ahora, esto siempre ha terminado bastante rápido/al instante. Sin embargo, no estoy seguro de qué pasaría si el servidor externo tardara mucho tiempo en responder. ¿Esperaría PHP con la ejecución del siguiente código hasta que cURL haya terminado?PHP: ¿terminará cURL en segundo plano, o bloqueará toda la ejecución del script adicional?
Realmente no puedo probarlo porque no sé cómo "simular" una respuesta más lenta. Espero que este pseudo-código hace que mi pregunta clara:
$ch = curl_init($some_remote_url);
$fp = fopen($some_local_file, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch); // Let's say this takes 20 seconds until the other server responds
curl_close($ch);
fclose($fp);
redirect($some_other_url); // Will this be executed instantly or only after 20 seconds?
La razón por la que estoy preguntando acerca de esto es que no me gustaría que mi usuario buscar en una página de "carga" durante 20 segundos en el caso de que el servidor remoto estaba respondiendo lentamente, por lo que probablemente tendría que mover todo el proceso a un trabajo cron. El usuario no necesita el resultado de la curvatura al instante, por lo que no le importa cuando finaliza el proceso.
+1 buena pregunta ... definitivamente después de 20 seg – Baba