Facebook karşılıklı arkadaş ve FQL 4999/5000 kayıt sınırı

0 Cevap php

PHP / FQL ile tüm karşılıklı arkadaşlarınızın bağlantılarını seçmek için çalışıyorum. > 6500 benzersiz olan> 12.000 bağlantıları, yani, benim UID (540 arkadaş) kullanma. Yani bu kod should tüm bağlantılarını iade fakat Facebook görünüşe FQL sorgularda 4999/5000 satır sınırı vardır.

// select mutual unique friends
 $unique_connections = $facebook->api_client->fql_query("

  SELECT uid1, uid2 FROM friend 
   WHERE uid1 IN 
   (SELECT uid2 FROM friend WHERE uid1=$uid)
   AND uid2 IN 
   (SELECT uid2 FROM friend WHERE uid1=$uid)
 ");

Ben arkadaşım liste üzerinden döngüler yazdı ve özgün kod bunların her biri için bir getMutualFriend sorgu gönderir çünkü yukarıda sayıları biliyorum.

foreach ($friends as $key) 
{
    $mutual_friends = $facebook->api_client->friends_getMutualFriends($key);
    foreach ($mutual_friends as $f_uid)
    {
        array_push($all_connections, array($key,$f_uid)); 
    }
}

FQL sorgu, 5 saniye içinde geri döner iken Tabii ki, bu komut dosyasını çalıştırmak için yaklaşık 3 dakika sürer. Ben sonuca Bunu aşmanın tek yolu geldim bu cevap ararken bir saat iki yöntemlerin bir karışımını kullanmak için sonra. Burada Peki bu ve sonrası. Herhangi bir bu senaryoyu yazmak ve 4999/5000 satır sınırını yenmek için daha iyi bir yol üzerinde fikir?

İşte yukarıdaki gibi aynı şeyi yapmalı bir fql_multiquery bulunuyor. Ayrıca 4999/5000 ile sınırlıdır.

$queries = '{
"user_friends":"SELECT uid2 FROM friend WHERE uid1 = '.$uid.'",
"mutual_friends":"SELECT uid1, uid2 FROM friend WHERE uid1 IN (SELECT uid2 FROM #user_friends) AND uid2 IN (SELECT uid2 FROM #user_friends)"
}';

$mq_test = $facebook->api_client->fql_multiquery(trim($queries));
print_r($mq_test);

0 Cevap