2011-06-21 4 views
5

Existe-t-il un moyen de vérifier l'état d'une commande curl? Dites, j'ai un appel à curl de php, en utilisant exec pour l'initier. Y a-t-il un moyen de vérifier la progression de l'opération pendant qu'elle fonctionne? Ou dois-je attendre que ça finisse? Exec ("curl $ url -k>/dev/null 2> ")Vérifier la progression de cURL

Répondre

4

Vous pouvez définir une fonction de progression:

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

Le nom d'une fonction de rappel où la fonction de rappel prend trois paramètres . La première est la ressource cURL , la seconde est une ressource de descripteur de fichier et la troisième est la longueur. Renvoie la chaîne contenant les données.

Pour plus d'informations, voir here.

Attention: This comment conteste la propre signature de fonction de PHP.

Vous ne pouvez pas utiliser exec(), parce que c'est une fonction de blocage. Il attendra jusqu'à ce que le programme en cours soit terminé.
Edit: Oh, je vois que vous avez utilisé l'esperluette, Nevermind

Ce que vous pourrait l'utilisation est popen(), mais à moins que boucle a une belle façon de sortir les progrès, cela ne va pas être assez.

Je suggère de passer -# comme paramètre à curl, de cette façon vous pouvez saisir la progression bien hors du flux de sortie.

+0

Mais cela fonctionne-t-il pour les commandes curl appelées de manière asynchrone via exec? – Nathan

+0

Exec ne bloquera pas la commande est exécuté en tant que travail avec &. Cependant, vous n'obtiendrez aucune sortie. – datasage

+1

Non, cela fonctionnera via 'curl_init()' et 'curl_exec()'. @datasage: oui, j'ai juste remarqué et corrigé cela lors de mon dernier montage. Mais encore, 'popen()' ou 'proc_open()' va être plus joli, parce que vous obtenez directement les flux de flux en amont. – phant0m

Questions connexes