我在单个函数中有4-5个fql查询。它们中的每一个都需要2-4秒才能执行。执行整个功能总共需要14-15秒。用户需要等待很长时间。所以我想减少处理时间。(PHP中没有很好地支持多线程概念。)
我听说过图形api中的批处理请求概念。我在谷歌上搜索了很多,但不知道如何在图形api中使用fql查询的批处理请求。
- 有人能举例说明使用fql查询的批量请求吗
- 查询处理时间将减少到什么时候
- 有没有其他方法可以减少许多fql查询的时间
更新:
https://graph.facebook.com/?batch=[{"method":"GET","relative_url":"me"},{"method":"GET","relative_url":"me/friends?limit=50"}]&access_token=ACCESS_TOKEN&method=post
更多信息请点击此处:http://developers.facebook.com/blog/post/2011/03/17/batch-requests-in-graph-api/
//$current_user=facebook id
$query1="SELECT uid, name FROM user WHERE is_app_user=1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = $current_user)";
$query2="SELECT uid, name, work_history FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = $current_user )";
$query3="SELECT uid, name, work, education FROM user WHERE uid = $current_user";
$queries = array(
array('method'=>'GET', 'relative_url'=>'method/fql.query?query='.str_replace(' ','+',$query1)),
array('method'=>'GET', 'relative_url'=>'method/fql.query?query='.str_replace(' ','+',$query2)),
array('method'=>'GET', 'relative_url'=>'method/fql.query?query='.str_replace(' ','+',$query3))
);
$objs = $facebook->api('/?batch='.json_encode($queries), 'POST');
$objs获取thre查询的整个结果的json数组。
而且它节省了很多时间。这3个单独的查询总共需要9秒。使用多重查询需要7秒。对于批量请求,它需要3.6秒。
与其单独调用每个FQL查询,为什么不使用FQL多查询?
http://developers.facebook.com/docs/reference/rest/fql.multiquery/
更新否则,如果你不想使用多查询,我想你想要的就是这里。我找不到更多关于FQL和Batch的信息。
curl
-F 'access_token=…'
-F 'batch=[{ "method": "POST",
"relative_url": "method/fql.query?query=select+name+from+user+where+uid=4",
}]
https://graph.facebook.com