我不知道我做错了什么,或者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 :(得分: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"
有很多原因导致慢速加载页面不好。