나는 PHP/FQL을 사용하여 모든 친구의 연결을 선택하려고합니다. 내 UID (540 명의 친구)를 사용합니다. 이는 12,000 개 이상의 연결을 의미하며, 그 중 6500 개 이상은 고유합니다. 따라서이 코드 은이 모든 연결을 반환해야하지만, Facebook은 분명히 FQL 쿼리에 4999/5000 행 제한을 가지고 있습니다.페이스 북의 상호 친구 및 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)
");
나는 원래 코드는 내 친구 목록을 통해 루프를 작성하기 때문에 위의 번호를 알고 그들 각각에 대해 getMutualFriend 쿼리를 보냅니다.
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));
}
}
물론이 스크립트를 실행하는 데는 약 3 분이 걸리지 만 FQL 쿼리는 5 초 내에 반환됩니다. 이 답변을 검색 한 후 나는 결론을 내 렸습니다.이 문제를 해결할 수있는 유일한 방법은 두 가지 방법을 혼합하여 사용하는 것입니다. 글쎄, 여기에 게시하십시오. 이 스크립트를 작성하고 4999/5000 행 한계를 능가하는 더 좋은 방법에 대한 아이디어가 있습니까?
위와 동일하게 수행해야하는 fql_multiquery가 있습니다. 또한 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);
친구 또는 친구의 친구가 필요합니까? 모든 친구들을위한 독창적 인 친구의 수는 아마도 FB API에서 끌어낼 수있는 가장 무의미한 통계 일 것입니다. Facebook의 API는 로그인 한 사용자의 친구 만 조회 할 수 있으므로 친구의 친구를 가질 수 없습니다. – Matt
나는 상호적인 친구를 의미했다. 나는 그것을 제목에서 바로 잡을 것입니다. 무의미 함은 당신의 관점에 달려 있습니다. 나는 데이터를 내보내는 사람들을위한 앱을 만들었고, 아마도 시각화를 위해 상호 친구를 사귀는 것은 지금까지 가장 많이 요청 된 기능이다. – ow3n
그래프 API에서 배치 요청과'mutualfriends' 연결을 사용하여이를 달성 할 수 있어야합니다. https://developers.facebook.com/docs/reference/api/batch/ 시간이있을 때 예를 들어 완전한 답을 게시 할 것입니다. –