php
  • facebook
  • facebook-graph-api
  • 2012-07-16 48 views 5 likes 
    5
    $access_token = $facebook->getAccessToken(); 
    $query = "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me())"; 
    $query = urlencode($query); 
    $fql_query_url = 'https://graph.facebook.com/'. 'fql?q='.$query. '&access_token=' . $access_token; 
    $fql_query_result = file_get_contents($fql_query_url); 
    $fql_query_obj = json_decode($fql_query_result, true); 
    

    Esta es la consulta. Me funciona más rápido porque tengo amigos limitados. Pero algunos usuarios de aplicaciones dicen que es muy lento para ellos si tienen más de 2000 amigos. Dijeron que tomó 30 segundos a los minutos también.Facebook FQL - muy lento

    ¿Por qué es muy lento? ¿Hay algún error en esta solicitud?

    +0

    ¿Qué pasa si intentas realizar consultas para más de 2000 amigos y verte a ti mismo? Todo el mundo miente – zerkms

    +0

    simplemente lo intenté después de publicar aquí :) Es lento. Comprobé el tiempo de ejecución del script en diferentes niveles. Lleva mucho tiempo con Facebook para obtener datos? ¿Podría la red o el rizo del servidor ser lento? ¿Cómo verificar eso en este caso? – Kamini

    +1

    'SELECCIONAR uid FROM user WHERE uid IN (...)' - esta parte no tiene sentido. Toda la consulta se puede reducir a 'SELECT uid2 FROM friend DONDE uid1 = me()' – zerkms

    Respuesta

    4

    Bueno, lo primero que - siempre y cuando se filtra por los usuarios uid y sólo después de eso selecciona uid - la consulta externa parece redundante. Así que la pregunta final puede reducirse a

    SELECT uid2 FROM friend WHERE uid1=me() 
    

    La segunda cosa: es un poco más práctico el uso de fb PHP SDK para realizar consultas FQL, no file_get_contents, como:

    $facebook->api("/fql?q={$fql}"); 
    

    (tomado de https://stackoverflow.com/a/7827550/251311)

    1

    Es más lento simplemente porque hay más datos para recopilar. 2000+ amigos es bastante para una sola consulta ...

    Alguna información útil se puede encontrar aquí - https://developers.facebook.com/live_status.

    Además del estado en vivo de la plataforma (de hecho, es útil saberlo), también hay dos gráficos que muestran el tiempo promedio de respuesta de la API y el recuento de errores API. Si observa solicitudes extremadamente lentas, diríjase a ese enlace para ver si tal vez se trata de un problema de todo el sistema.

    0

    En mi opinión, la FQL es buena, pero se debe usar cuando la API de gráfico normal no puede cumplir con sus requisitos. En el caso dado, si el único requisito es obtener ID de amigos, simplemente puede usar el siguiente código.

    FB.api("me/friends?fields=id&limit=3000", function(resp){//process data}); 
    
    +0

    ¿es verdad? ¿Es un método más rápido que fql? – Kamini

    +0

    @Kamini: estoy seguro de que están muy cerca por rendimiento. El almacenamiento utilizado es el mismo, pero solo 2 interfaces diferentes – zerkms

    +0

    En mi experiencia con FQL, terminas procesando por tu cuenta. Pero Graph API puede darle resultados procesados. Puedo estar equivocado, pero esa es mi experiencia con FB API y FQL. –

    Cuestiones relacionadas