cURL est à la base un outil en ligne de commande destiné à transmettre ou à utiliser des ressources accessibles à travers un réseau sur Unix.
cURL pour Client URL Request Library à été porté en PHP à travers la librairie php_cURL développé par Daniel Stenberg depuis la version 4.2 de PHP.
Cette outil est particulièrement intéressant pour exécuter des requêtes réseau en PHP. Il supporte pour le moment les protocoles http, https, ftp, gopher, telnet, DICT, file et LDAP et se met en place aussi facilement qu’un flux de lecture écriture de fichier (fopen, fwrite, fclose est porté en curl_init, curl_exec, curl_close).
Beaucoup de constantes sont faites pour régler les paramètres d’interrogation et les informations transmises lors de la requête (champ POST pour HTTP, type de retour, possibilité d’écrire le retour dans un fichier, …).
J’ai eu récemment l’occasion de beaucoup l’utiliser pour mieux maîtriser les appels aux web services en HTTP. Cette librairie m’a permis de bien tracer les différentes interactions et de bien connaître toutes les informations transmises au web services. Je vous conseille vraiment de bien creuser cet outil car il est très puissant.
Un article sur le blog « Cats who code » (http://www.catswhocode.com/blog/10-awesome-things-to-do-with-curl) présente 10 utilisations de cURL pour effectuer des interactions avec des webservices très connus (FaceBook, Twitter, …) mais aussi pour connaître le temps de réponse d’un serveur web par exemple.