Diferencias entre file_get_contents() y curl

publicado por: user45237

Estoy haciedo un script para obtener contenido desde una url y he encontrado aqui, aqui y aqui que se puede hacer con curl y con file_gets_contents(), pero no tengo del todo claro dos cosas:

  • ¿Qué diferencias hay entre las dos?
  • ¿Cuál es la mas apropiada para obtener html desde una url para luego analizar el html?

El código que he usado es este:

file_get_contents

$html = file_get_contents($urlFlujo, false, $context);

curl

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$html = curl_exec($ch);
curl_close($ch);

Realizan la misma función que es obtener un html a partir de una url, pero no tengo claro que funcionen de la misma forma o sirvan exactamente para lo mismo.

Pido solo datos empíricos y demostrables de qué forma es la más apropiada (menor tiempo de ejecución, menor consumo de recursos, etc.) para mi caso.

solución

En pocas palabras:

file_get_contents()

Es un simple destornillador. Ideal para simples solicitudes GET donde el encabezado, método de solicitud HTTP, tiempo de espera, cookies, redirecciones y otras cosas más complejas no importan.

También se pueden usar para peticiones POST, pero habría que crear un contexto para ello (Ver esta contribución en el Manual de PHP).

Es menos seguro que cURL y por eso viene desactivado por defecto en muchos entornos PHP.

cURL

Es mucho más potente y para usos más avanzados.

cURL es probablemente la librería de HTTP más ampliamente utilizada en el mundo de la programación. Originalmente fue codificado utilizando lenguaje C, y luego fue portado a muchos otros lenguajes.

cURL puede manejar manipulaciones HTTP complicadas de manera elegante, como solicitudes HTTP asíncronas, informes de progreso, etc.

El único problema de cURL es que requiere algún tiempo, varias horas al menos, para familiarizarse con sus funciones y estilo de codificación.

Pero al ser una librería tan usada, la documentación y ejemplos de código en la red son abundantes.

Como ejemplo, sólo basta con ver la amplia documentación para cURL en el Manual de PHP (enlace de más arriba).


¿Cuál es más rápido?

Todas las pruebas que he leído hasta ahora indican que cURL es más rápido.

El siguiente gráfico es el producto de una prueba entre diferentes métodos, publicada por Philip Norton en Quickest Way To Download A Web Page With PHP

introducir la descripción de la imagen aquí

Ver también:

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *