Я пытаюсь использовать Graph API и PHP + JS SDK, чтобы получить список друзей человека, а затем выйти и найти общих друзей для всех в списке друзей.Я могу легко получить список друзей, так как это всего лишь один простой вызов API.Однако проблема возникает при попытке заполучить всех общих друзей.Если предположить, что у человека 500 друзей, то это 501 вызов API, чтобы запустить приложение один раз, а это слишком много.
Хорошо.
Следующая идея.Сгруппируйте все эти вызовы API и превратите 501 в 25. Это казалось хорошей идеей, и я так и сделал.К сожалению, это не сработало.Вот то, что мой код:
KK NVM, я исправил это (наиболее).Это все еще работает действительно медленно.ЗДЕСЬ НОВЫЙ КОД:
$userFriends = $facebook->api('/me/friends', 'GET');
$queries = array();
$mutual_friends = array();
foreach ($userFriends[data] as $v1) {
$queries[] = array('method' => 'GET', 'relative_url' => '/me/mutualfriends/'.$v1[id]);
if (count($queries)==20){
$batchResponse = $facebook->api('?batch='.json_encode($queries), 'POST');
foreach (range(0,count($queries)-1) as $n) {
$mutual_friend[] = json_decode($batchResponse[$n]['body'], true);
}
$queries = array();
}
$batchResponse = $facebook->api('?batch='.json_encode($queries), 'POST');
foreach (range(0,count($queries)-1) as $n) {
$mutual_friend[] = json_decode($batchResponse[$n]['body'], true);
}
}
У меня есть подлое подозрение, что вы на самом деле не должны выполнять подобные вызовы API, но я могу ошибаться.Кроме того, я читал, что FQL на самом деле является лучшим, предпочтительным методом для получения такого рода информации, но это будет означать, что мне также потребуется доступ к списку друзей других людей.
Единственное другое решение, которое я могу придумать, - это ограничить вызовы, но я не хочу этого делать, потому что не хочу, чтобы приложение запускалось медленно или имело значительный период ожидания.
Возможно ли то, что я пытаюсь сделать?Я поступаю неправильно?Любой вклад или опыт будет принята с благодарностью.