Как улучшить время отклика из Outlook API
Я работаю с Outlook Calendar API, и ответ, который я получаю, занимает несколько минут, что очень долго и разочаровывает, что еще более расстраивает, это 5 из 10 раз, когда я не получаю результаты из Calendar API, не уверен, что это из-за медленного ответ от Calendar API
В настоящее время я отправляю запрос curl, если все идет хорошо, я получаю необходимые результаты, но если я получаю ошибку в ответе curl, например, истек срок действия токена, то мне нужно отправить еще один запрос curl, чтобы получить обновленный токен, а затем второй запрос curl для получения записей с использованием обновленного токена,
вот мой php код
$fields = array(
'name' => $event_name,
'description' => $event_desc,
'start_time' => $meeting_start_time,
'event_start_time' => $meeting_end_time,
'access_token' => $token,
'method' => "POST"
);
$add_new_meeting_url = "https://apis.live.net/v5.0/$live_id/events" . "?" . http_build_query($fields);
$add_new_meeting = curl_init();
curl_setopt($add_new_meeting, CURLOPT_URL, $add_new_meeting_url);
curl_setopt($add_new_meeting, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($add_new_meeting, CURLOPT_CONNECTTIMEOUT, 0);
$get_new_meeting_curl_response = curl_exec($add_new_meeting);
curl_close($add_new_meeting);
$new_event = json_decode($get_new_meeting_curl_response, true);
if ($new_event['error']) {
$refresh_token_url = "https://login.live.com/oauth20_token.srf?client_id=client_id&client_secret=secret_key&redirect_uri=www.xyz.com&grant_type=refresh_token&refresh_token=$refresh_token";
$ch_refresh_token = curl_init();
curl_setopt($ch_refresh_token, CURLOPT_URL, $refresh_token_url);
curl_setopt($ch_refresh_token, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch_refresh_token, CURLOPT_CONNECTTIMEOUT, 0);
$get_refresh_token_curl_response = curl_exec($ch_refresh_token);
curl_close($ch_refresh_token);
$new_access_token = json_decode($get_refresh_token_curl_response, true);
$user_id = $adviser_id;
$params = array(
':user_id' => $user_id,
':access_token' => $new_access_token['access_token']
);
$stmt = parent::query("UPDATE `schedule_access_token` SET `access_token` = :access_token WHERE `user_id` = :user_id;", $params);
$params = array(':user_id' => $user_id);
$stmt = parent::query("SELECT * FROM `schedule_access_token` WHERE `user_id` = :user_id;", $params);
if ($stmt->rowCount() > 0) {
foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $field => $value) {
$this->options[$field] = $value;
}
}
$live_id = $this->options['live_id'];
$token = $this->options['access_token'];
$refresh_token = $this->options['refresh_token'];
$user_calendar = $this->options['user_calendar_id'];
$fields = array(
'name' => $event_name,
'description' => $event_desc,
'start_time' => $meeting_start_time,
'event_start_time' => $meeting_end_time,
'access_token' => $token,
'method' => "POST"
);
$add_new_meeting_url = "https://apis.live.net/v5.0/$live_id/events" . "?" . http_build_query($fields);
$add_new_meeting = curl_init();
curl_setopt($add_new_meeting, CURLOPT_URL, $add_new_meeting_url);
curl_setopt($add_new_meeting, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($add_new_meeting, CURLOPT_CONNECTTIMEOUT, 0);
$get_new_meeting_curl_response = curl_exec($add_new_meeting);
curl_close($add_new_meeting);
$new_event = json_decode($get_new_meeting_curl_response, true);
}
Поскольку я все зависит от ответа от API, что я могу сделать, чтобы ускорить ответ? Я буду очень признателен за любую помощь здесь, так как это сводит меня с ума