2011-06-21 22 views
5

¿Hay alguna manera de verificar el estado de un comando curl? Diga, tengo una llamada para curl de php, usando exec para iniciarlo. ¿Hay alguna manera de verificar el progreso mientras se ejecuta? ¿O tengo que esperar a que termine?Comprobar el progreso de cURL

exec ("curl $ url -k>/dev/null 2> ");

Respuesta

4

Se puede definir una función de progreso:

curl_setopt($curl, CURLOPT_PROGRESSFUNCTION, 'my_progress_handler'); 

El nombre de una función de devolución de llamada, donde función de la devolución de llamada toma tres parámetros . El primero es el recurso cURL , el segundo es un recurso de descriptor de archivo y el tercero es . Devuelve la cadena que contiene los datos.

Para obtener más información, consulte here.

Atención: This comment disputa la propia firma de función de PHP.

Usted no puede utilizar exec(), porque es una función de bloqueo. Esperará, hasta que el programa en cuestión haya terminado.
Editar: Ah, veo que ha utilizado el símbolo de unión, no importa

Lo que pudo uso es popen(), pero a menos rizo tiene una buena manera de dar salida a los avances, esto no va a ser bonito.

Sugeriría pasar -# como parámetro a curl, de esa manera usted puede tomar el progreso muy bien de la secuencia de salida.

+0

Pero, ¿eso funciona para los comandos curl llamados asincrónicamente a través de exec? – Nathan

+0

Exec no bloqueará el comando se ejecuta como un trabajo con &. Sin embargo, no obtendrás ningún resultado. – datasage

+1

No, eso funcionará a través de 'curl_init()' y 'curl_exec()'. @datasage: sí, acabo de notar y corregir eso en mi última edición. Pero aún así, 'popen()' o 'proc_open()' va a ser más bonito, porque obtienes los manejadores de la secuencia de outstream directamente. – phant0m

Cuestiones relacionadas