私はまだ PHP を学んでおり、このライブラリ ( TeamSpeak 3 PHP Framework )を使用するのは初めてです。特定のグループのオンライン ユーザーの数を返そうとしています。いくつかの方法を試してみましたが、成功しませんでした。
これは、グループ内のすべてのユーザー (オフライン ユーザーを含む) をカウントします。
$admins = 0;
foreach($ts3->serverGroupGetById(12)->clientList() as $client) {
$admins++;
}
そこで、そのリストをオンライン ユーザー リストと比較してみました。
$admins = 0;
foreach($ts3->serverGroupGetById(12)->clientList() as $client) {
if($ts3->clientList($client)) {
$admins++;
}
}
仮想サーバーで試してみて問題がなかったので、時々動作しますが、カウントは正しかったのですが、別の仮想サーバーで試してみると (グループ ID とポートを変更しました)、次のようになります。
Warning: preg_match(): Unknown modifier '9' in C:\xampp\htdocs\serverstatus\libraries\TeamSpeak3\Helper\String.php on line 192
その警告は一部のサーバー グループでのみ表示されます。理由はわかりません。
$admins = 0;
foreach($ts3->clientList($client) as $client) {
$admins++;
}
このコードはすべてのオンライン ユーザーを表示する必要があると思いますが、テストしたところ、値が常にオンライン ユーザーであるとは限りません。前に述べたように、仮想サーバーでは正しい数が表示されますが、別の仮想サーバーで試してみると 48 になりました。しかし、オンラインのユーザーは 61 人です。