facebook FQL-производительность в цикле foreach? - PullRequest
1 голос
/ 17 февраля 2012

Я пытаюсь запросить некоторую информацию из FQL на Facebook, но запрос немного медленный.

<code>$friend = "SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 30";

  $friendSQL = $facebook->fql($friend);
  foreach ($friendSQL as $friends_id){
    $uid2 = $friends_id['uid2']; 
     $query = "SELECT uid,username,name,pic_small FROM user WHERE uid='".$uid2."'";
     $friend_info = $facebook->fql($query);
    echo "<pre>";
    print_r($friend_info);
    echo "
"; }

Итак, я получаю список из 30 друзей и пытаюсь использовать цикл foreach для получения другой информации от uid2 (который является моим другом)

Я заметил, что запрос медленный. Есть ли другой способ получить информацию о моих друзьях?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

Ваше утверждение select может выглядеть примерно так:

SELECT uid,username,name,pic_small FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 30)

Так что вам больше не придется использовать цикл. Это почти то же самое, что и FQL Multiquery.

1 голос
/ 17 февраля 2012

Ваш скрипт медленный, потому что он делает новый HTTP-запрос в каждой итерации, и каждый новый запрос занимает много времени.Правильный способ сделать это - использовать FQL.multiquery .С помощью multiquery вы можете получить всю необходимую информацию в одном HTTP-запросе без использования foreach.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...