0
 foreach($friends_array as $user) {
    $argstag = array('to' => $user);
    $argstag['x'] = $locations_x[$i];
    $argstag['y'] = $locations_y[$i];
    $datatag = $facebook->api('/' . $photo_id . '/tags', 'post', $argstag);
    $i++;
 }

これをループ (複数の API リクエスト) で行う代わりに、単一の API リクエストで行う方法はありますか?

4

2 に答える 2

1

以下のコードは、配列$friendsの友達数が50人未満の場合に機能します。

$tags = array();
 foreach ($friends as $friend)
         {
            $tag = array();
            $tag['tag_uid'] = $friend;
            $tag['x'] = rand() % 100;
            $tag['y'] = rand() % 100;
            $tags[] = $tag;
         }
          $argstag = array(
            'tags' => $tags
          );
          $facebook->api("$photoId/tags","POST", $argstag);
于 2012-10-16T07:18:43.857 に答える
0

同時に大量の操作を行う場合は、バッチ リクエスト APIの使用を検討してください。同時に複数のタスク (最大 50) を実行できます。

理論的にどのように使用できるかの例を次に示します。

$batches = array();
$i = $b = 0;
foreach($friends_array as $user) {
 $argstag = array('to' => $user);
 $argstag['x'] = $locations_x[$i];
 $argstag['y'] = $locations_y[$i];

 // If we've reached the batch limit, create a new batch request.
 if ($i == 50) {
    $b++;
    $i = 0;
 }

 // Single batch request.
 $batches["$b"][] = array(
    'method' => 'POST',
    'relative_url' => '/' . $photo_id . '/tags',
    'body' => 'to=' . $user . '&x=' . $locations_x[$i] . '&y=' . $locations_y[$i]
 );

 $i++;
}

if (!empty($batches)) {
  foreach ($batches AS $key => $batch) {
    $b = json_encode($batch);
    $res = $facebook->api('?batch=' . urlencode($b), 'POST');
    // Facebook populates $res with the response.
  }
}

これはテストされていませんが、うまくいけば役に立ちます。探しているものではないかもしれませんが、Facebook のサーバーに送信する必要があるリクエストが多数ある場合は注意が必要です。

于 2012-10-16T01:02:04.710 に答える