我不知道我是不是做错了什么,或者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);发布于 2015-07-21 17:39:31
两位开发人员在这里传道。
您正在对PHP中的会议资源使用getIterator方法。getIterator返回一个为您处理分页的interator,因此只要您继续遍历它,它就会继续从Twilio请求页面。我猜你有很多会议,所以你一直在寻呼一段时间。
另外,对于每个会议,您对会议资源发出一个API调用,并为调用中的参与者发出另一个API调用。即使您的帐户中只有10次会议,您也将进行30个API调用。
所以,虽然Twilio不需要5-7分钟来返回一个响应,但是您的脚本在API上做了大量的工作,这需要很长时间。
我同意一半疯狂的(顺便说一句)关于缓存结果的建议。您可以在您自己的系统中通过设置一个调用的事件回调URL来更新一个会议对象,这样Twilio就可以发送有关电话会议的状态更新,并且可以在此时保存有关它的详细信息。
发布于 2015-07-21 16:57:00
虽然我认为代码没有什么问题,但是在处理API时,最好有一个单独的服务(例如CRON作业或单独的线程)来调用API并缓存结果。然后您的实时应用程序将从缓存的结果中读取..。这样,你的网站的速度不受第三方网站的影响。显示一个小便条可能是个好主意,类似于“在XYZ上最后更新的结果”
慢加载页面不好的原因有很多。
https://stackoverflow.com/questions/31545108
复制相似问题