2010-07-14 3 views
1

내 프로필 페이지에서 페이스 북에서 내 좋아하는 것을 모두 가져 와서 각각에 대한 세부 정보를 표시하려고합니다. 예를 들어 TV 쇼인 Seinfeld가 마음에 들면 Seinfeld 로고가 몇 개나되는지 함께 표시됩니다.페이스 북의 그래프가 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에 대해 추가 API 호출을하고 있습니다. 75 가지를 좋아한다면 API 호출을 76 번하고 각 API 호출에 1 초가 걸릴 수 있습니다. 대신, '$가 좋아'를 통해 반복의 수행

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

당신은 당신이 원하는 것을 할 수있는 '$ likes_items'

+0

감사합니다 마이크 - 당신이 보여준 예제에서 - $ likes [ 'data']가 배열의 배열이 될 것이므로 여기에 implode 함수를 사용할 수는 없습니다. 그러나 나는 $ likees [데이터]에서 그림을 얻는다. - 모든 like_ids를 얻은 다음, 하나의 API 호출을 만든다. - 감사하다. - 나만 시도해보고 이걸 닫는다. ur help 덕분에. – Gublooo

+0

또한 빌드하지 않는다. 문자열 concat을 사용하여 쿼리 문자열. 대신에'$ facebook-> api ('/', array ('ids'=> $ ids))'와 같은 것을해라 - 이렇게하면 POST를 사용하여 데이터가 전송되기 때문에 URL 길이 제한에 맞지 않는다. . – daaku

+0

귀하의 의견을 보내 주셔서 감사합니다.하지만 율리 (Yuliy)가 지적한 것처럼, 나는 한 번의 패스로 좋아하는 세부 사항과 함께 좋아하는 항목을 끌어낼 수 있습니다. – Gublooo