file_get_contents curl_init php curl file-get-contents

php - curl_init - file_get_contents curl



PHP cURL vs file_get_contents (3)

¿En qué se diferencian estas dos piezas de código cuando acceden a una API REST?

$result = file_get_contents(''http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url'');

y

$ch = curl_init(''http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url''); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch);

Ambos producen el mismo resultado, a juzgar por

print_r(json_decode($result))


Además de esto, debido a algunos hackeos de sitios web recientes, tuvimos que proteger nuestros sitios más. Al hacerlo, descubrimos que file_get_contents no funcionaba, donde curl aún funcionaría.

No es 100%, pero creo que esta configuración php.ini puede haber estado bloqueando la solicitud file_get_contents .

; Disable allow_url_fopen for security reasons allow_url_fopen = 0

De cualquier manera, nuestro código ahora funciona con curl .


Este es un tema viejo, pero en mi última prueba en una de mis API, cURL es más rápido y más estable. A veces file_get_contents en una solicitud más grande necesita más de 5 segundos cuando cURL necesita solo de 1,4 a 1,9 segundos, lo que es el doble más rápido.

Necesito agregar una nota sobre esto que acabo de enviar contenido GET y recive JSON. Si configura cURL correctamente, tendrá una gran respuesta. Solo "cuéntanos" para INFORMAR lo que necesitas enviar y lo que necesitas para recibir y eso es todo.

En su examen me gustaría hacer esta configuración:

$ch = curl_init(''http://api.bitly.com/v3/shorten?login=user&apiKey=key&longUrl=url''); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_HTTPHEADER, array(''Accept: application/json'')); $result = curl_exec($ch);

Esta solicitud devolverá datos en 0.01 segundos como máximo


file_get_contents() es un simple destornillador. Ideal para solicitudes GET simples donde el encabezado, el método de solicitud HTTP, el tiempo de espera, el cookiejar, los redireccionamientos y otras cosas importantes no importan.

fopen() con un contexto de flujo o cURL con setopt son setopt con cada bit y opción que se te ocurra.