我正在使用 PHP 从呼叫中心获取有关 80 个用户的可用性数据。我希望每 5 秒向 CallCenter 查询每个用户的状态/可用性,并将结果显示在仪表板上。
CallCenter 一次只能通过 URL 查询一个用户,并且用户名在 url 中(因此 url 不是恒定的)。CallCenter 的答案在 XML 页面中。我一直在使用fopen()来读取 url / XML 的内容,因为这始终是随机生成的 XML 名称,因此查询 url 指向一个目录,而不是确切的 xml url。
我的所有东西都使用foreach循环,其中唯一的 url 用于 USER001,读取 XML 页面的内容并更新变量。演示代码:
用户数组:
$users = array(
"username" => array("fullname" => "Full Name",
"status" => ""
),
"username" => array("fullname" => "Full Name",
"status" => "")
);
Foreach 循环:
foreach($users as $username => $userstatus) {
$url = 'http://'.$username.':PasswordForUser@serveraddress.com:80/callcenter/'.$username.'/services/callcenter/';
$get = fopen($url, "r");
if ($get) {
while (!feof($get)) {
$status = fgets($get, 4096);
}
fclose($get);
}
if(strpos($status, 'Available')) { $users[$username]["status"] = "Available"; } else { $users[$username]["status"] = "Offline"; }
}
问题:
我有一个 jquery 脚本,它每 5 秒刷新一次仪表板,因此每 5 秒向 CallCenter 服务器查询所有用户。
这可行,但查询实际上需要 1 多分钟才能完成循环并将所有结果返回到仪表板页面。CallCenter 用户可以看到在给定时间有多少用户/代理可用,以便他们知道是否有足够的代理可用以处理 CallCenter 负载,这一点至关重要。
可能的解决方案:
什么是我的案例的最佳解决方案?
我想到的是为每个用户创建一个 PHP 页面。有一个 CRONJOB,每 x 小时运行一次页面(刷新),页面上有一个脚本,每 5 秒循环通过 XML 查询到 CallCenter。在每个循环结束时(每 5 秒),用户状态被发送到并更新收集器页面。每个用户页面将结果发送到收集器页面,然后仪表板页面每 5 秒将数据获取到收集器页面。
这是一个“聪明”的解决方案吗?你会推荐什么,你会如何编码?
(我是 PHP 初学者)