Estoy tratando de seleccionar todas las conexiones mutuas de amigos con PHP/FQL. Usar mi UID (540 amigos), lo que significa> 12,000 conexiones, de las cuales> 6500 son únicas. Así que este código debe devolver todas las conexiones, pero aparentemente Facebook tiene un límite de fila 4999/5000 en las consultas FQL.Amigos mutuos de Facebook y límite de registro FQL 4999/5000
// 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)
");
sé los números anteriores porque el código original que escribió bucles a través de mi lista de amigos y envía una consulta getMutualFriend para cada uno de ellos.
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));
}
}
Por supuesto, se tarda casi 3 minutos en ejecutar esa secuencia de comandos, mientras que la consulta FQL vuelve en 5 segundos. Después de una hora de buscar esta respuesta, llegué a la conclusión de que la única forma de evitar esto es usar una combinación de los dos métodos. Bueno eso, y publique aquí. ¿Alguna idea sobre una mejor forma de escribir este script y superar el límite de fila 4999/5000?
Aquí hay una fql_multiquery que debería hacer lo mismo que arriba. También está limitado a 4999/5000.
$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);
¿Quieres amigos de amigos o amigos comunes? La cantidad de amigos mutuos únicos para todos tus amigos es probablemente la estadística más inútil que podría obtener de la API de FB. La API de Facebook solo le permite buscar amigos del usuario conectado, por lo que no puede obtener Amigos de amigos. – Matt
Quise decir amigos mutuos; Intentaré corregir eso en el título. La inutilidad depende de tu perspectiva. Creé una aplicación para que las personas exporten sus datos y conseguir amigos en común (supuestamente para la visualización) es, con mucho, la característica más solicitada. – ow3n
Debería poder lograrlo utilizando solicitudes por lotes y la conexión 'mutualfriends' de Graph API. https://developers.facebook.com/docs/reference/api/batch/ Publicaba una respuesta completa con un ejemplo cuando tengo el tiempo. –