我想将日期参数传递到PHP SDK批处理请求方法中。
是否可以传入日期参数,例如:
$params = array(
'time_range' => array(
'since' => (new DateTime("-1 week"))->format('Y-m-d'),
'until' => (new DateTime())->format('Y-m-d'),
),
);
我的批量请求本质上是:
foreach( $campaign_ids as $campaign_id ) {
$batch[] = $fb->request('GET/', env("FB_APP_VERSION") . '/' . $campaign_id . '/insights?fields=impressions,unique_clicks,reach');
}
try {
$responses = $fb->sendBatchRequest($batch);
} catch(FacebookExceptionsFacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
根据
- https://developers.facebook.com/docs/marketing-api/insights/v2.5#dates-和时间
我想你可以为每个请求添加一个额外的参数,如下所示:
格式:time_range={'since':'2015-01-01','until':'2015-01-20'}
在PHP中,这意味着您必须对$params
数组进行json_encode,并将其添加到每个请求中。
$time_range = array(
'since' => (new DateTime("-1 week"))->format('Y-m-d'),
'until' => (new DateTime())->format('Y-m-d'),
)
$fb->request('GET/', env("FB_APP_VERSION") . '/' . $campaign_id . '/insights?fields=impressions,unique_clicks,reach&time_range=' . json_encode($time_range));
在阅读源代码后,我发现您可以在params中传递日期,如下所示:(传递给请求处理程序时会得到url_encoded)
foreach( $campaigns as $campaign ) {
$params = array(
'time_range' => array(
'since' => (new DateTime($campaign->data_date . ' -1 day'))->format('Y-m-d'),
'until' => (new DateTime($campaign->data_date))->format('Y-m-d')
),
);
$batch[] = $fb->request('GET', '/' . $campaign->ad_campaign_id . '/insights?fields=impressions,unique_clicks,reach', $params);
}