
FacebookのBatch APIを使うと、リクエストをまとめて実行することができます。
以下のサンプルでは、自分がいいねしたFacebookページのいいね数を、ページ単位にリクエストするのではなく、Batch APIを使って一括してリクエストしています。
2012/04/12時点では、Batch APIで一度にリクエストできる数は50となっていますので、50リクエスト毎にBatch APIを実行しています。
※サンプルの作成には、以下のサイトを参考にさせてただきました。
sample.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?php // リクエスト上限数 define('MAX_REQUEST_NUM', 50); require('src/facebook.php'); $facebook = new Facebook(array( 'appId' => 'Your appId', 'secret' => 'Your secret' )); $user = $facebook->getUser(); if ($user) { try { // いいねしたページを取得 $likes = $facebook->api('/me/likes'); // いいねしたページの数 $num = count($likes["data"]); // バッチ用カウンタ $batchCount = 0; for ($i = 0; $i < $num; $i++) { // 1リクエスト分を登録 $requests[] = array('method' => 'GET', 'relative_url' => '/' . $likes['data'][$i]["id"]); $batchCount++; // リクエスト上限数か最後の場合 if ($batchCount >= MAX_REQUEST_NUM || $i == ($num - 1) ) { // 一括リクエストを実行 $response = $facebook->api('/?batch=' . json_encode($requests), 'POST'); // レンスポンスを処理 foreach($response as $key => $val) { $body = json_decode($response[$key]["body"], true); echo $body['name'] . ' : ' . $body['likes'] . "<br />"; } $batchCount = 1; $requests = array(); } } } catch (FacebookApiException $e) { error_log($e); } } |