使用Facebook批量请求链接对请求的响应

Mat*_*iva 4 facebook facebook-batch-request

我正在使用Facebook的批量请求发布到多个订阅源,我需要将正确的响应链接到批处理中的每个请求.由于我没有找到关于文档的确切信息,返回数组的成员是否与请求的顺序相同?

换句话说,如果我在返回的数组的第三个成员中出错,这是否意味着错误是指我在批处理中发送的第三个请求?

我可以使用id来获取成功的请求,但错误消息看起来很通用,并且不会将任何数据链接到生成它们的请求(除非我遗漏了某些内容).

Zac*_*ger 8

对,那是正确的.

我的策略是在加载批量请求时创建跟踪数组.此数组将我的关联数组的键与我发布批次的数字顺序相关联.当我遍历结果时,我使用计数器逐步执行跟踪数组并拉出正确的关联数组索引.然后我用它来更新关联数组和批处理操作的那一步的结果.

如果批处理支持'name'参数并且每个响应返回该参数,那将是很好的.但是,如果您使用该名称创建批量依赖项,那么这似乎才有效:https: //developers.facebook.com/docs/reference/api/batch/

加载批次:

foreach ($campaigns as $title => $campaign) {
    if (count($batch) == 20) {
        $batches[] = $batch;
        $batch = array();
    }

    $titles[] = $title;  #TRACKING array;
    $body = http_build_query($campaign);
    $body = urldecode($body);

    $batch[] = array(
        'method' => 'POST',
        'relative_url' => "/act_{$act}/adcampaigns",
        'body' => $body
    );
}
Run Code Online (Sandbox Code Playgroud)

处理批次:

if ($batch) {
    $batches[] = $batch;
    $counter = 0;

    foreach ($batches as $batch) {
        $params = array(
          'access_token' => $access_token,
          'batch' => json_encode($batch)
        );

        $responses = $facebook->api('/', 'POST', $params);

        foreach ($responses as $response) {
            $response = json_decode($response['body'], 1);
            $campaign_id = $response['id'];
            $title = $titles[$counter];  #RETRIEVING THE INDEX FROM THE TRACKING ARRAY
            $campaigns[$title]['campaign_id'] = $campaign_id;
            $counter++; #INCREMENTING THE COUNTER
        }
    }
}
Run Code Online (Sandbox Code Playgroud)