PHPを使用して、コールセンターから約80人のユーザーの可用性データを取得しています。5秒ごとに各ユーザーのステータス/可用性についてコールセンターに問い合わせ、ダッシュボードに結果を表示したいと思います。
CallCenterは、一度に1人のユーザーのURLを介してのみ照会でき、ユーザー名はURLに含まれています(したがって、URLは一定ではありません)。コールセンターからの回答はXMLページにあります。これは常にランダムに生成されたXML名であり、クエリurlは正確なxml urlではなくディレクトリを指しているため、私はfopen()を使用してurl/XMLのコンテンツを読み取りました。
私はすべてをforeachループで動作させています。ここでは、USER001に一意のURLが使用され、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"; }
}
問題:
ダッシュボードを5秒ごとに更新するjqueryスクリプトがあるため、5秒ごとにCallCenterサーバーにすべてのユーザーが照会されます。
これは機能しますが、クエリがループを終了してすべての結果をダッシュボードページに返すまでに実際には1分以上かかります。コールセンターのユーザーは、特定の時間に利用可能なユーザー/エージェントの数を確認して、コールセンターの負荷を処理するのに十分なエージェントが利用可能かどうかを知ることが重要です。
考えられる解決策:
私の場合の最善の解決策は何でしょうか?
私が考えたのは、ユーザーごとにPHPページを作成することです。x時間ごとにページを実行する(更新するための)CRONJOBと、5秒ごとにXMLクエリを介してCallCenterにループするページ上のスクリプトを用意します。各ループの終わり(5秒ごと)に、ユーザーステータスがコレクターページに送信され、更新されます。すべてのユーザーページが結果をコレクターページに送信し、ダッシュボードページが5秒ごとにデータをコレクターページにフェッチングします。
これは「スマート」なソリューションですか?何をお勧めし、どのようにコーディングしますか?
(私はPHPの初心者です)