График Facebook получение моих лайков занимает 75 секунд или больше

На странице своего профиля я пытаюсь вытащить все свои лайки из фейсбука и отобразить подробную информацию о каждом лайке. Например, если мне нравится телешоу «Сайнфельд», я покажу логотип «Сайнфельд» вместе с указанием того, скольким он понравился и т. Д.

Я использую php sdk, и для извлечения данных требуется вечность.

Сейчас у меня всего 24 лайка, и на получение этих данных уходит 75 секунд.

Это код, который я использую

<pre>
$likes = $facebook->api('/me/likes');

foreach($likes['data'] as $like) {

$like_item = $facebook->api($like['id']);
?>
<fb:profile-pic uid="&lt;?php echo $like_item['id'];?>" size="square"></fb:profile-pic> 
<?php 
echo $like_item['name'];
?>
<fb:like href="<?php echo $like_item['link'];?>"></fb:like> 
<?
}

</pre>

Любая идея, почему это занимает так много времени. Я делаю это правильно или есть лучший способ подойти к этому. Огромное спасибо


person Gublooo    schedule 14.07.2010    source источник


Ответы (2)


Вы должны иметь возможность сделать $facebook->api('/me/likes?fields=id,name,link'), чтобы получить все необходимые данные за один проход.

person Yuliy    schedule 14.07.2010

Да, есть подход лучше, чем этот! По сути, вы делаете дополнительный вызов API для КАЖДОГО типа. Если вам нравится 75 вещей, вы делаете 76 вызовов API, каждый из которых может занять секунду. Вместо того, чтобы повторять «$ лайков», выполните:

$likes_csv = implode(',',$likes['data']);
$likes_items = $facebook->API('/?ids='.$likes_csv);

Тогда вы можете делать все, что хотите, с помощью «$like_items».

person Mike Sherov    schedule 14.07.2010
comment
Спасибо, Майк - в этом есть смысл - в примере, который вы показали, мы не сможем использовать здесь функцию implode, поскольку $ like ['data'] будет массивом массивов. Но я получаю картину - от $ Like [data] - получаю все like_ids, а затем делаю один вызов API - большое спасибо - позвольте мне просто попробовать это и закрыть этот - спасибо за помощь - person Gublooo; 14.07.2010
comment
Кроме того, не создавайте строку запроса с использованием конкатенации строк. Вместо этого сделайте что-нибудь вроде $facebook->api('/', array('ids' => $ids)) - это гарантирует, что он не достигнет ограничения длины URL-адреса, поскольку данные будут отправлены с помощью POST. - person daaku; 14.07.2010
comment
Спасибо за ваш вклад - но, как отмечает Юлий, я могу вытащить лайки вместе с деталями лайков за один проход. - person Gublooo; 14.07.2010