php
  • facebook
  • facebook-graph-api
  • 2012-07-16 13 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); 
    

    Dies ist die Abfrage. Es funktioniert schneller, weil ich begrenzte Freunde habe. Aber einige App-Nutzer sagen, dass es für sie sehr langsam ist, wenn sie über 2000 Freunde haben. Sie sagten, es habe 30 Sekunden bis Minuten gedauert.Facebook FQL - sehr langsam

    Warum ist es sehr langsam? Ist in dieser Anfrage etwas falsch?

    +0

    Was ist, wenn Sie versuchen, Abfrage für 2000+ Freunde durchzuführen und sich selbst zu sehen? Jeder lügt – zerkms

    +0

    nur ich habe es nach dem Posten hier versucht :) Es ist langsam. Ich habe die Ausführungszeit des Skripts auf verschiedenen Ebenen überprüft. Es dauert lange mit Facebook, um Daten zu bekommen? Könnte die Vernetzung des Servers oder das Einrollen langsam sein? Wie überprüft man das in diesem Fall? – Kamini

    +1

    'SELECT uid FROM Benutzer WHERE uid IN (...)' - dieser Teil macht keinen Sinn. Die gesamte Abfrage kann auf SELECT reduziert werden uid2 FROM freunde WHERE uid1 = me() ' – zerkms

    Antwort

    4

    Nun, das erste, was - so lange, wie Sie durch uid Benutzer filtern und nur wählen uid danach - die äußere Abfrage überflüssig aussieht. So kann die endgültige Abfrage

    SELECT uid2 FROM friend WHERE uid1=me() 
    

    Das zweite, was reduziert werden: es ist ein bisschen mehr praktisch ist fb PHP SDK verwenden FQL Abfragen durchführen, nicht file_get_contents, wie:

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

    (entnommen aus https://stackoverflow.com/a/7827550/251311)

    1

    Es ist langsamer, weil einfach mehr Daten gesammelt werden müssen. 2000+ Freunde ist ziemlich viel für eine einzige Abfrage ...

    Einige hilfreiche Informationen finden Sie hier - https://developers.facebook.com/live_status.

    Neben dem Live-Status der Plattform (in der Tat nützlich zu wissen), gibt es auch zwei Grafiken, die die durchschnittliche API-Antwortzeit und die Anzahl der API-Fehler anzeigen. Wenn Sie extrem langsame Anfragen bemerken, gehen Sie zu diesem Link, um zu sehen, ob es sich um ein systemweites Problem handelt.

    0

    Meiner Ansicht nach ist FQL gut, sollte aber verwendet werden, wenn die normale Grafik-API Ihre Anforderungen nicht erfüllen kann. In dem gegebenen Fall, wenn die einzige Anforderung ist, IDs von Freunden zu erhalten, können Sie einfach folgenden Code verwenden.

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

    ist es wahr? Ist es schneller als fql? – Kamini

    +0

    @Kamini: Ich bin mir sicher, dass sie sehr nah an der Leistung sind. Der verwendete Speicher ist der selbe, aber nur 2 verschiedene Schnittstellen – zerkms

    +0

    Nach meiner Erfahrung mit FQL enden Sie selbst mit der Verarbeitung. Aber Graph API kann Ihnen verarbeitete Ergebnisse liefern. Ich könnte falsch liegen, aber das ist meine Erfahrung mit FB API und FQL. –

    Verwandte Themen