Saltar al contenido

PHP cURL frente a file_get_contents

Nuestros investigadores estrellas agotaron sus depósitos de café, por su búsqueda todo el tiempo por la resolución, hasta que Virginia encontró el arreglo en Gitea así que en este momento la compartimos aquí.

Solución:

file_get_contents() es un simple destornillador. Excelente 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 transmisión o cURL con setopt son powerdrills con cada bit y opción que se te ocurra.

Además de esto, debido a algunos ataques recientes a sitios web, tuvimos que proteger más nuestros sitios. Al hacerlo, descubrimos que file_get_contents no funcionó, donde rizo todavía funcionaría.

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

; Disable allow_url_fopen for security reasons
allow_url_fopen = 0

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

Este es un tema antiguo, 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 solo necesita de 1,4 a 1,9 segundos, lo que es el doble de rápido.

Necesito agregar una nota sobre esto que solo envío GET y recibo contenido JSON. Si configura cURL correctamente, tendrá una gran respuesta. Simplemente “dígale” a cURL lo que necesita enviar y lo que necesita recibir y eso es todo.

En su ejemplo, 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,10 segundos como máximo

Más adelante puedes encontrar las notas de otros desarrolladores, tú aún tienes la opción de insertar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *