Я все еще изучаю 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 пользователь онлайн.
Я знаю, что это было год назад, но это могло бы помочь, потому что я гуглил тот же вопрос, и через некоторое время я узнал, как это сделать.
Вот что вы ищете, протестировали и работаете:
foreach($ts3_VirtualServer->serverGroupClientList(11) as $admins){
foreach($arr_ClientList as $ts3_Client)
if(in_array($ts3_Client['client_nickname'], $admins)){
$adminsCount++;
}
}
Надеюсь, это поможет;)
Других решений пока нет …