PHP rendimiento curl vs file_get_contents

redhead_girl___ballpoint_pen_by_vianaarts-d5531ab

Una de las opciones para mejorar la seguridad de nuestro código que planteaba en el post asegurar php desde el archivo de configuración era la de evitar que archivos remotos pudiesen ser abiertos o incluidos desde nuestro código fuente, también comentaba que una de las consecuencias directas era la imposibilidad de utilizar file_get_contents para abrir urls.

Después de realizar varias pruebas internas utilizando ambas instrucciones para obtener un json de una página externa a mi sitio veo que no solo es en seguridad que ganamos sino en rendimiento, desde mi código he podido constatar que utilizar curl es de media un 30 % más rápido que llamar directamente a file_get_contents.

Haciendo una búsqueda luego de ver estos resultados (que todo sea dicho fueron hechos con una versión de PHP muy antigua la 5.2.1) he encontrado que hay otros usuarios a los que les ha pasado lo mismo y han obtenido resultados muy similares a los míos.

La función que utilicé está dentro de una clase con lo cual gané casi un 20 % de rendimiento al hacerla estática.

$detalles = FALSE;
$options = array(
                CURLOPT_RETURNTRANSFER    => true
);
$ch    = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$error = curl_errno($ch);
if(!$error){
  $header  = curl_getinfo($ch);
  $http_code = trim($header['http_code']) * 1;
  if($http_code == 200){
     $detalles = json_decode($content);
  }
}
curl_close($ch);
return $detalles;

Comentarios