2010-07-14 3 views
1

На моей странице профиля, я пытаюсь вытащить все мои любимые вещи из facebook и отображать детали о каждом из них. Например, если мне нравится телевизор Seinfeld, я покажу логотип Seinfeld вместе с тем, как он понравится и т. Д.График 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> 

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

ответ

2

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

+0

Спасибо, это получилось отлично – Gublooo

2

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

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

Тогда вы можете делать то, что вы хотите с «$ likes_items»

+0

Спасибо Mike - это имеет смысл - в примере, который вы показали - мы не сможем использовать функцию implode здесь, так как $ likes ['data'] будет массивом массивов. Но я получаю картину - от $ likes [data] - получить все подобные_иды, а затем сделать один api-вызов - спасибо кучу - позвольте мне просто попробовать это и закрыть это - спасибо за помощь ур – Gublooo

+0

Кроме того, не создавайте строка запроса с использованием строки concat. Вместо этого сделайте что-то вроде '$ facebook-> api ('/', array ('ids' => $ ids))' - это гарантирует, что он не ударит по пределу длины URL-адреса, поскольку данные будут отправлены с помощью POST , – daaku

+0

Спасибо за ваши входы - но, как указывает Юлий, я могу вытащить понравившихся людей вместе с подробностями в одном проходе. – Gublooo

Смежные вопросы