0

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

2 回答 2

1

Twilio 开发人员布道者在这里。

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

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

因此,虽然 Twilio 不会花费 5-7 分钟来返回一个响应,但您的脚本正在使用需要很长时间的 API 进行大量工作。

我同意 Half Crazed(顺便说一句,名字很好)关于缓存结果的建议。您可以通过为您的呼叫设置事件回调 URL 来更新您自己系统中的会议对象,以便 Twilio 可以向您发送有关电话会议的状态更新,并且您可以在那时保存有关它的详细信息。

于 2015-07-21T17:39:31.770 回答
0

虽然我看不出代码有什么问题,但在处理 API 时,通常最好有一个单独的服务(例如 CRON 作业或单独的线程)来调用 API 并缓存结果。然后,您的实时应用程序将从缓存的结果中读取......这样您的网站速度就不会受到第 3 方网站的影响。显示一个小注释可能是个好主意,类似于“Results last updated on XYZ”

加载缓慢的页面不好的原因有很多。

于 2015-07-21T16:57:00.207 回答