2016-09-14 150 views
0

我正在开发一个带有PHP(SDK v5)的facebook应用程序。我需要获得用户拥有管理员权限的页面的帖子,并且要为每个帖子计算它的赞/评论/份额。高效地检索facebook帖子上的赞/分享/评论(PHP)

使用图形API我结束了此解决方案:

$fb = new Facebook\Facebook([ 
'app_id' => 'XXX', 
'app_secret' => 'XXX', 
'default_graph_version' => 'v2.7',]); 

$pageId = //find the page id 
$accessToken = //and the access token 

$response = $fb->get('/'.$pageId.'/feed', (string) $accessToken); 
$response = $response->getDecodedBody(); 
$pagePosts = $response['data']; 
foreach ($pagePosts as $post) { 

    //query for the likes and count them 
    $likesResponse = $fb->get('/'.$post['id'].'/likes', (string) $accessToken); 
    $likesObject = $likesResponse->getDecodedBody(); 
    echo 'likes count: '.count($likesObject['data']).'<br>'; 

    //comments and shares similar to likes 
} 

我认为上面的解决方案是远远不够完善,因为对于每一个Facebook发布三个额外通话将被执行(喜欢,评论,股) 。这种表现和可伸缩性非常糟糕。

现在对于性能的提升,我正打算使用FQL但我偶然uppon从Facebook的FQL文档此评论:

随着2016年8月8日的,FQL将不再可用,并且不能 查询。


所以我的问题是:

有谁知道另一种方式来有效地检索喜欢/评论/股,甚至是一种提高了短路电流解决方案的性能?

+0

https://developers.facebook.com/docs/graph-api/using- graph-api /#fieldexpansion – CBroe

+0

当然,要求所有喜欢并自己数数真的很糟糕。将限制设置为0,并请求摘要。 https://developers.facebook.com/docs/graph-api/reference/v2.7/object/likes – CBroe

+0

谢谢你的回答。因此,我仍然会循环浏览所有帖子,并分别要求获得喜欢,评论和分享?不同之处在于,我会要求提供会减少信息量的摘要? – Mario

回答

0

以下@CBroe建议我找到了一个解决方案。该解决方案需要对图形API,它是从(3个*职位)大的改良效果的单一通话+1电话:

$fb = new Facebook\Facebook([ 
    'app_id' => 'XXX', 
    'app_secret' => 'XXX', 
    'default_graph_version' => 'v2.7',]); 

$pageId = //find the page id 
$accessToken = //and the access token 

$response = $fb->get('/'.$pageId.'/feed?fields=likes.summary(1).limit(0),comments.summary(1).limit(0), ....', (string) $accessToken); 
$response = $response->getDecodedBody(); 
$pagePosts = $response['data']; 

foreach ($pagePosts as $post) { 
    $likesObject = $post['likes']; 
    $likesCount = $likesObject['summary']['total_count']; 

    $commentsObject = $post['comments']; 
    $commentsCount = $commentsObject['summary']['total_count']; 
}