Jan 31

cURL es una utilidad de linea de comandos (curl) y una librería (libcurl) para realizar transferencias de archivos que soporta multitud de protocolos distintos (FTP, HTTP, etc.) y un sinfín de opciones. Tanto la utilidad como la librería son muy conocidas y de un uso muy extendido.

La librería se puede usar desde varios lenguajes de programación y entre ellos, como no, el PHP. Puedes encontrar en el manual todo un capítulo dedicado al conjunto de funciones cURL. De entre la infinidad de cosas que puedes hacer usando esta librería con PHP: obtener el contenido de una web, obtener datos XML (como RSS), subir o bajar archivos de servidores FTP, soporte para conexiones seguras (HTTPS, SCP), etc. Una opción destacable es el soporte de peticiones HTTP POST y GET con lo que podéis realizar scraping de casi cualquier cosa.

Un ejemplo de código para obtener el contenido de una página web (o un feed):

[php] $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://www.phpbsd.net/’);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$resultado = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch); [/php]

Con el código anterior en $resultado nos quedamos con los datos obtenidos o nada si ha ocurrido un error, si ese es el caso en $error tenemos un mensaje de texto con el error. Se usan las siguientes opciones:

  • CURLOPT_URL con la URL a descargar.
  • CURLOPT_HEADER a false para no incluir las headers HTTP en la respuesta.
  • CURLOPT_RETURNTRANSFER a true para que la función curl_exec() devuelva la respuesta como un string en lugar de printarla por pantalla.

Para más opciones consultar la documentación de la función curl_setopt().

De todas las funcionalidades que proporciona el soporte de cURL en PHP una de las más llamativas son todas las funciones multi_* para realizar peticiones en paralelo, esto puede llegar a ser muy útil en numerosas situaciones. En un siguiente post explicaré como lanzar peticiones paralelas desde PHP usando cURL.

Tagged with:
preload preload preload