Twilio API медленно реагирует на получение конференций

Я не знаю, делаю ли я что-то неправильно или Twilio просто медлительно запрашивает записи. При запросе списка конференций с помощью php ответ может занять до 5-7 минут, что не представляется возможным для любого типа приложения.

Вот пример кода, который я использую:

$conferences = $client->account->conferences->getIterator(0, 50, array(
));
foreach ($conferences as $conference) {
$conferenceRoom = $client->account->conferences->get($conference->sid);
$date1 = new DateTime($conference->date_created);
$date2 = new DateTime($conference->date_updated);
$interval = $date1->diff($date2);
$page = $conferenceRoom->participants->getPage(0, 50);
$participants = $page->participants;
$participantCount = count($participants);
$result['conferences'][$conference->sid]['friendly_name'] = $conference->friendly_name;
$result['conferences'][$conference->sid]['sid']           = $conference->sid;
$result['conferences'][$conference->sid]['participants']  = $participantCount;
$result['conferences'][$conference->sid]['status']        = $conference->status;
$result['conferences'][$conference->sid]['duration']      = $interval->format('%H:%I:%S%');
$result['conferences'][$conference->sid]['date_created']  = strtotime($conference->date_created);
$result['conferences'][$conference->sid]['date']          = $conference->date_created;
}
echo json_encode($result);

0

Решение

Twilio разработчик евангелист здесь.

Вы используете getIterator метод для ресурса конференций в библиотеке PHP. getIterator возвращает интегратор, который обрабатывает разбиение на страницы для вас, поэтому, пока вы продолжаете циклически проходить по нему, он будет продолжать запрашивать страницы из Twilio API. Я предполагаю, что у вас было много конференций, поэтому вы продолжаете пейджингить некоторое время.

Кроме того, для каждой конференции вы затем делаете вызов API для ресурса конференции и еще один вызов API для участников вызова. Даже если у вас есть только 10 конференций в вашей учетной записи, вы будете делать 30 вызовов API.

Итак, хотя Twilio не тратит 5-7 минут, чтобы вернуть один ответ, ваш скрипт выполняет огромную работу с API, который занимает много времени.

Я согласен с предложением Half Crazed (кстати, отличное имя) о результатах кэширования. Вы можете обновить объект конференции в вашей собственной системе, настроив URL обратного вызова для ваших звонков так что Twilio может отправлять вам обновления статуса о конференц-связи, и вы можете сохранить информацию об этом на этом этапе.

1

Другие решения

Хотя я не вижу ничего плохого в коде, при работе с API обычно лучше иметь отдельный сервис (например, задание CRON или отдельный поток) для вызова API и кэширования результатов. Ваше приложение в режиме реального времени будет считывать из кэшированных результатов … таким образом, на скорость вашего сайта не влияют сторонние сайты. Это, вероятно, хорошая идея, чтобы отобразить небольшую заметку, что-то вроде «Результаты, последние обновленные на XYZ»

Существует масса причин, по которым медленные страницы загружаются плохо.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector