我写了一些PHP代码来帮助我连接到电话系统的REST API(即ICWS.php。)
然后为了让我的生活更轻松,我写了一个小脚本(即interations.php),它接受两个参数:方法和ID。这个脚本基本上会在我的PHP连接器中调用一个公共方法。
另外,我有另一个脚本(即poll.php)。此脚本将每半秒ping一次API,以查看是否有新消息可用。我正在使用服务器端轮询来处理这个问题。下面的代码将显示poll.php
的方式 while(1){
//process Messages
$icws->processMessages();
//show the Calls Queue
$result = $icws->getCallsQueue();
//$current = $icws->getCurrentUserStatusQueue();
echo 'event: getMessagingQueue' . "\n";
echo 'data: ' . json_encode( array('calls' => $result));
echo "\n\n"; //required
ob_flush();
flush();
putToSleep($sleepTime);
}
function putToSleep($val = 1){
if( is_int($val) ){
sleep($val);
} else {
usleep($val * 1000000);
}
}
从我的网站(即.systemystem.html)开始,我启动服务器端轮询"每隔1/2秒对API进行一次ping操作。"从同一页面,我也可以拨打其他直接电话(即拨打7204536695);所有请求都是通过Ajax完成的。
这是我生成服务器端轮询的代码
//Server Side Message Polling
function startPolling(){
var evtSource = new EventSource("poll.php");
evtSource.addEventListener("getMessagingQueue", function(e) {
var obj = JSON.parse(e.data);
if(!obj.calls || obj.calls.length === 0){
console.log('no messages');
phoneKeyPad(false);
return;
}
processMessages(obj.calls);
}, false);
}
$(function(){
startPolling();
});
我面临的问题是,在进行ajax调用时,响应时间过长(+1分钟)。
似乎Apache服务器因使用其他应用程序变慢而变慢。
我可以检查什么以及如何解决此问题?