# Batch Request Example This example covers sending a batch request with the Facebook SDK for PHP. ## Example {#example} The following example assumes we have the following permissions granted from the user: `user_likes`, `user_events`, `user_photos`, `publish_actions`. The example makes use of [JSONPath to reference specific batch operations](https://developers.facebook.com/docs/graph-api/making-multiple-requests/#operations). ~~~~ $fb = new Facebook\Facebook([ 'app_id' => '{app-id}', 'app_secret' => '{app-secret}', 'default_graph_version' => 'v2.2', ]); // Since all the requests will be sent on behalf of the same user, // we'll set the default fallback access token here. $fb->setDefaultAccessToken('user-access-token'); /** * Generate some requests and then send them in a batch request. */ // Get the name of the logged in user $requestUserName = $fb->request('GET', '/me?fields=id,name'); // Get user likes $requestUserLikes = $fb->request('GET', '/me/likes?fields=id,name&limit=1'); // Get user events $requestUserEvents = $fb->request('GET', '/me/events?fields=id,name&limit=2'); // Post a status update with reference to the user's name $message = 'My name is {result=user-profile:$.name}.' . "\n\n"; $message .= 'I like this page: {result=user-likes:$.data.0.name}.' . "\n\n"; $message .= 'My next 2 events are {result=user-events:$.data.*.name}.'; $statusUpdate = ['message' => $message]; $requestPostToFeed = $fb->request('POST', '/me/feed', $statusUpdate); // Get user photos $requestUserPhotos = $fb->request('GET', '/me/photos?fields=id,source,name&limit=2'); $batch = [ 'user-profile' => $requestUserName, 'user-likes' => $requestUserLikes, 'user-events' => $requestUserEvents, 'post-to-feed' => $requestPostToFeed, 'user-photos' => $requestUserPhotos, ]; echo '

Make a batch request

' . "\n\n"; try { $responses = $fb->sendBatchRequest($batch); } catch(Facebook\Exceptions\FacebookResponseException $e) { // When Graph returns an error echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { // When validation fails or other local issues echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } foreach ($responses as $key => $response) { if ($response->isError()) { $e = $response->getThrownException(); echo '

Error! Facebook SDK Said: ' . $e->getMessage() . "\n\n"; echo '

Graph Said: ' . "\n\n"; var_dump($e->getResponse()); } else { echo "

(" . $key . ") HTTP status code: " . $response->getHttpStatusCode() . "
\n"; echo "Response: " . $response->getBody() . "

\n\n"; echo "
\n\n"; } } ~~~~ There five requests being made in this batch requests. - Get the user's full `name` and `id`. - Get one thing the user likes (which is a [Page node](https://developers.facebook.com/docs/graph-api/reference/page)). - Get two events the user has been invited to (which are [Event nodes](https://developers.facebook.com/docs/graph-api/reference/event)). - Compose a message using the data obtained from the 3 requests above and post it on the user's timeline. - Get two photos from the user. If the request was successful, the user should have a new status update similar to this: ~~~~ My name is Foo User. I like this page: Facebook Developers. My next 2 events are House Warming Party,Some Foo Event. ~~~~ It should also contain a response containing two photos from the user. %FB(devsite:markdown-wiki:info-card { content: "The response object should return a `null` response for any request that was pointed to with JSONPath as is [the behaviour of the batch functionality of the Graph API](https://developers.facebook.com/docs/graph-api/making-multiple-requests/#operations).", type: 'warning', })
## Multiple User Example {#multiple-user-example} Since the requests sent in a batch are unrelated by default, we can make requests on behalf of multiple users and pages in the same batch request. ~~~~ $fb = new Facebook\Facebook([ 'app_id' => '{app-id}', 'app_secret' => '{app-secret}', 'default_graph_version' => 'v2.2', ]); $batch = [ $fb->request('GET', '/me?fields=id,name', 'user-access-token-one'), $fb->request('GET', '/me?fields=id,name', 'user-access-token-two'), $fb->request('GET', '/me?fields=id,name', 'page-access-token-one'), $fb->request('GET', '/me?fields=id,name', 'page-access-token-two'), ]; try { $responses = $fb->sendBatchRequest($batch); } catch(Facebook\Exceptions\FacebookResponseException $e) { // When Graph returns an error echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { // When validation fails or other local issues echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } foreach ($responses as $key => $response) { if ($response->isError()) { $e = $response->getThrownException(); echo '

Error! Facebook SDK Said: ' . $e->getMessage() . "\n\n"; echo '

Graph Said: ' . "\n\n"; var_dump($e->getResponse()); } else { echo "

(" . $key . ") HTTP status code: " . $response->getHttpStatusCode() . "
\n"; echo "Response: " . $response->getBody() . "

\n\n"; echo "
\n\n"; } } ~~~~