是否可以进行批量POST API调用?

时间:2012-04-01 18:56:09

标签: facebook api post batch-file

我正在编写一个以用户身份每日发布的应用程序,并对执行此操作的PHP代码进行基准测试,每个用户似乎需要大约两秒钟。我正在将工作划分为块,并使用多个cron作业来完成每个块。我希望有一天能够扩展到成千上万的用户,但这种工作负载太多了。我的服务器整天都需要使用这种方法一次一个地发布给每个用户。

人们通常如何做到这一点?我见过其他应用程序。是否有一些方法可以使用一次API调用立即发送所有这些帖子?每个用户使用单独的API调用非常慢。

感谢。

2 个答案:

答案 0 :(得分:0)

一方面,这完全取决于API。

但是,您可以使用多线程或伪并行方法,以便您的程序一次发送100个HTTP POST请求,而不是一个接一个地生成一个请求。

由于您使用的是PHP,我认为多线程已经出局了,但这个问题与其他问题非常相似。例如,请参阅how these folks recommend curl_multi

答案 1 :(得分:0)

您可以使用批量查询来实现您的需求。

批量查询的代码如下所述。您可以在http://25labs.com/tutorial-post-to-multiple-facebook-wall-or-timeline-in-one-go-using-graph-api-batch-request/

中详细了解Facebook批量查询
$body = array(
        'message'        => $_POST['message'],
        'link'           => $_POST['link'],
        'picture'        => $_POST['picture'],
        'name'           => $_POST['name'],
        'caption'        => $_POST['caption'],
        'description'    => $_POST['description'],
        );

$batchPost[] = array(
    'method' => 'POST',
    'relative_url' => "/{ID1}/feed",
    'body' => http_build_query($body) );
$batchPost[] = array(
    'method' => 'POST',
    'relative_url' => "/{ID2}/feed",
    'body' => http_build_query($body) );
$batchPost[] = array(
    'method' => 'POST',
    'relative_url' => "/{ID3}/feed",
    'body' => http_build_query($body) );

$multiPostResponse = $facebook->api('?batch='.urlencode(json_encode($batchPost)), 'POST');