我在单一函数中有4-5个fql查询。每个人都需要2-4秒才能执行。执行整个函数需要总计14-15秒。用户需要等待很长时间。所以我想减少该处理时间。(PHP中没有很好地支持多线程概念。)

我在图形API中听说过批处理请求概念。我已经oogled很多但不明白如何在图形API中使用批处理请求。

  • 可以使用FQL查询的批处理请求,任何人可以解释说明吗?
  • 在什么时候查询处理时间将减少? 有没有另一种方法来减少许多FQL查询的时间?
有帮助吗?

解决方案

而不是单独调用每个fql查询,为什么不使用fql multiouryery?

http://developers.facebook.com/docs/reference/rest/fql.multiercery/

更新 否则,如果你不想要使用多姑娘,我想你正在寻找什么是这里。我找不到关于FQL和批处理的更多信息。

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
.

其他提示

更新:

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-REQUESS-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 gets gres查询的整个结果的json数组。

,它节省了很多时间。这3个查询分别需要9秒。使用型号需要7秒钟。使用批处理需要3.6秒。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top