2

私はまだ 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 人です。

4

1 に答える 1

2

それは1年前のことですが、同じ質問をグーグルで検索していて、しばらくしてその方法を見つけたので、それが役立つかもしれません.

これがあなたが探しているもので、テストして動作します:

   foreach($ts3_VirtualServer->serverGroupClientList(11) as $admins){
        foreach($arr_ClientList as $ts3_Client)
            if(in_array($ts3_Client['client_nickname'], $admins)){
                $adminsCount++;
            }
    }

それが役立つことを願っています;)

于 2017-01-05T14:09:52.903 に答える