Graph api(facebook)太慢了

时间:2011-06-18 14:22:30

标签: php facebook facebook-graph-api

虽然我使用Graph API进行简单操作,例如:

require 'src/facebook.php';

# facebook class
$facebook = new Facebook(array(
  'appId'  => 'XXX',
  'secret' => 'XXX',
));

for ($i = 0; $i < 9; $i++)
{
    $url = $facebook->api('/Intel');
    echo $url['name'] . '<br />';
}

(只是一个简单的例子,我想返回9个不同的页面,但现在没关系)

嗯,这个动作花了9-10秒!太多..这是页面上唯一的一个(你可以尝试运行它看看)。

我该怎么办? (如果我通过api使用FQL [作为方法fql.query]它不会改善运行时间,我检查了它)我必须使用图形api。

顺便说一下,我正在使用PHP SDK 3.0.1(最新版本......也许这就是问题?)

2 个答案:

答案 0 :(得分:2)

你是否意识到你正在循环中进行远程呼叫?它将逐个进行几次远程调用,这就是为什么它的速度很慢。 API很快。 我建议你在这里使用FQL并批量发送多个查询。这样您就可以进行一次远程调用并获得多个查询的数据。

/**
 * FQL multiquery
 */
$multiquery_fql[ 'query1' ] = $query1;
$multiquery_fql[ 'query2' ] = $query2;
$multiquery_fql = json_encode( $multiquery_fql );
$multiquery_result = $facebook->api(array(
    "method"    => "fql.multiquery",
    "queries"     => $multiquery_fql,
    'access_token' => '' // fill a generic token here (granted to app, independent of user)
));

我总是建议使用应用程序。如果出现问题而不是IP,最好让您的应用程序被阻止。

答案 1 :(得分:1)

对于图api的这一部分你不需要api,所以不要使用它。只需通过curl和json_decode获取http://graph.facebook.com/Intel

或者如果你可以使用它

$data = json_decode(file_get_contents('http://graph.facebook.com/Intel'));