2011-04-30 8 views
17

Me pidieron utilizar una API simple de Facebook para devolver el número de Me gusta o acciones en el trabajo que devuelve la cadena json. Ahora, ya que voy a hacer esto para una gran cantidad de enlaces, cuál es mejor:utilizando el contenido del archivo obtener o curl

Usando file_get_contents o cURL.

Ambos parecen devolver los mismos resultados y cURL parece ser más complicado de usar, pero ¿cuál es la diferencia entre ellos? ¿Por qué la mayoría de las personas recomiendan usar cURL en file_get_contents? Antes de ejecutar la API, que puede tomar todo un día para procesar, me gustaría recibir comentarios.

Respuesta

24

Hace unos años comparé los dos y el CURL fue más rápido. Con CURL crea una instancia de CURL que se puede usar para cada solicitud, y se asigna directamente a la biblioteca libcurl muy rápida. Usando file_get_contents tiene la sobrecarga de los contenedores de protocolo y el código de inicialización que se ejecuta para cada solicitud.

Desenterraré mi script de prueba y me ejecutaré en PHP 5.3 pero sospecho que CURL seguirá siendo más rápido.

+0

Hice una comparación de los dos en 5.3 y 5.4, y cURL todavía es considerablemente más rápido que 'file_get_contents', especialmente para llamadas múltiples en la misma solicitud (así que, básicamente, lo que dijiste sigue representando 5.3+). –

+0

También lo comparé ahora con 2 servidores en PHP5.5 - el rizo era 3-10 veces más rápido que simple file_get_contents() Los guiones se pueden encontrar aquí: http://stackoverflow.com/questions/13004805/file-get- contents-or-curl-in-php/24954327 # 24954327 – CodeBrauer

10

cURL admite las solicitudes de https más ampliamente que file_get_contents y no es demasiado complicado. Aunque la solución file_get_contents de una línea es limpia, su sobrecarga detrás de escena es mayor que cURL.

$curl_handle=curl_init(); 
curl_setopt($curl_handle,CURLOPT_URL,$feedURL); 
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); 
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,true); 
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false); 
$buffer = curl_exec($curl_handle); 
curl_close($curl_handle); 

Esto es lo que uso para hacer llamadas a la API de Facebook ya que muchos de ellos requieren una señal_acceso y facebook sólo aceptará señal_acceso información de una conexión segura. También noté una gran diferencia en el tiempo de ejecución (cURL es mucho más rápido).

Cuestiones relacionadas