Twilio API在召开会议时响应缓慢

时间:2015-07-21 16:53:25

标签: php twilio conference twilio-php

我不知道我做错了什么,或者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);

2 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

您正在PHP库中使用会议资源的getIterator方法。 getIterator返回一个为您处理分页的交互器,因此只要您继续循环它,它就会继续从Twilio API请求页面。我的猜测是你有很多会议,所以你继续寻呼一段时间。

此外,对于每个会议,您可以为会议资源进行API调用,并为呼叫中的参与者进行另一个API调用。即使您的帐户中只有10个会议,您也会进行30次API调用。

所以,虽然Twilio没有花5-7分钟来回复一个回复,但是你的脚本正在花费大量的工作来处理这个需要很长时间的API。

我同意Half Crazed(顺便说一句名字)建议的缓存结果。您可以通过设置event callback URL for your calls来更新自己系统中的会议对象,以便Twilio可以向您发送有关电话会议的状态更新,并且您可以在此时保存有关它的详细信息。

答案 1 :(得分:0)

虽然我发现代码没有任何问题,但在处理API时,通常最好有一个单独的服务(例如CRON作业或单独的线程)来调用API并缓存结果。然后,您的实时应用程序将从缓存的结果中读取...这样,您的网站速度不受第三方网站的影响。显示一个小音符可能是一个好主意,类似于"结果最后更新于XYZ"

有很多原因导致慢速加载页面不好。