图形api(facebook)太慢


Graph api (facebook) is too slow

当我使用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秒!太多这是页面上唯一的acion(您可以尝试运行它并查看)。

我能做什么?(如果我通过api[作为方法FQL.query]使用FQL,它并没有改善运行时间,我检查了它)我必须使用图形api。

顺便说一句,我使用的是PHP SDK 3.0.1(最新版本……也许这就是问题所在?)

您是否意识到您正在循环中进行远程调用?它会一个接一个地打几个远程电话,这就是它速度慢的原因。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。

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

或者如果你能用

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