Que es cURL?
Es una librería de funciones para conectar con servidores y trabajar con ellos. El trabajo se realiza con formato URL. Es decir, sirve para realizar acciones sobre archivos que hay en URLs de Internet, soportando los protocolos más comunes, como http, ftp, https, etc.
cURL es una herramienta para usar en un intérprete de comandos para transferir archivos con sintaxis URL, y soporta FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE y LDAP.
cURL soporta certificados HTTPS, HTTP POST, HTTP PUT, subidas FTP, Kerberos, subidas mediante formulario HTTP, proxies, cookies, autenticación mediante usuario+contraseña (Basic, DIgest, NTLM y Negotiate para HTTP y kerberos4 para FTP), continuación de transferencia de archivos, tunneling de proxy http y muchas otras prestaciones. cURL es open source/software libre distribuido bajo la Licencia MIT.
cURL comprende una utilidad de línea de comandos (curl) y una librería (libcurl) para realizar transferencias de archivos que soporta multitud de protocolos distintos.
La librería se puede usar desde varios lenguajes de programación y entre ellos, el PHP.
Que se puede 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 es posible realizar scraping de casi cualquier cosa.
Transferir imágenes a ImageShack con PHP y cURL, PageRank con PHP y cURL, Número de mis páginas indexadas por Google, Enviar mensajes (tweets) a Twitter con PHP, etc.
Cuál es el propósito de cURL?
El principal propósito y uso para cURL es automatizar transferencias de archivos o secuencias de operaciones no supervisadas. Es por ejemplo una buena herramienta para simular las acciones de un usuario en un navegador web.
Libcurl es la biblioteca/API correspondiente que los usuarios pueden incorporar en sus programas; cURL actúa como un wrapper aislado para la biblioteca libcurl. libcurl se usa para proveer capacidades de transferencia de URL a numerosas aplicaciones, tanto libres y open source como así también privativas.
Funciones cURL
curl_close — Cerrar una sesión CURL
curl_copy_handle — Copiar un gestor cURL junto con todas sus preferencias
curl_errno — Devuelve el número del último error
curl_error — Devuelve una cadena que contiene el último error para el actual período de sesiones
curl_exec — Realizar una sesión CURL
curl_getinfo — Obtener información relativa a una transferencia específica
curl_init — Iniciar una sesión CURL
curl_multi_add_handle — Añadir un CURL normal a un multi CURL
curl_multi_close — Cerrar un conjunto de manejadores de CURL
curl_multi_exec — Ejecutar la sub-conexiones del manejador CURL actual
curl_multi_getcontent — Devuelve el contenido de un recurso CURL si se establece CURLOPT_RETURNTRANSFER
curl_multi_info_read — Obtenga información acerca de las transferencias actuales curl_multi_init — Devuelve un nuevo multi CURL
curl_multi_remove_handle — Eliminar múltiples manejadores de un conjunto de manejadores CURL curl_multi_select — Espere por actividad en cualquier conexión
curl_multi curl_setopt_array — Establecer opciones múltiples para una transferencia CURL curl_setopt — Establecer una opción para una transferencia de CURL
curl_version — Obtiene información de la versión de CURL
Configuración cURL
CURL se encuentra en PHP. Según la instalación que tengamos de PHP tendremos disponibles, o no, las funciones de la librería CURL.
La mejor manera de saber si disponemos de Curl en nuestra instalación PHP es invocar una de sus funciones. Si nos muestra un error de función no existente, es que no tenemos posibilidad de usar Curl. No dispone por defecto de soporte para Curl, pero cambiando una línea del archivo de configuración de PHP (el archivo php.ini) podremos dar soporte a Curl.
La línea en concreto es: ;extension=php_curl.dll
Conclusión
CURL es una librería muy potente. Estos ejemplos que se han desarrollado en el presente blog, y que los podemos encontrar en entradas próximas, muestran sólo algunas de las utilidades de la librería, que puede servir de ejemplo para entender el uso y dar pie a otras utilidades interesantes. Se recomienda probar los ejemplos mas adelante desarrollados, trabajando con PHP 5.2.9-2 sobre el servidor WAMP V2. Tener en cuenta que se cuenta con la extensión php_curl descomentada.
Tener en cuenta al momento de desarrollar el codigo empleando cURL, los metodos post que emplean las URL que deseamos trabajar. En el caso de la aplicacion en facebook se debio considerar el codigo debido al cambio de facebook en cuanto a la forma post que ahora utiliza: ajax/updatestatus.php, para actualizaciones de estado.
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.