Для работы скрипта будем использовать библиотеку, созданную ранее в посте
Автоматический постинг в ВКонтакте на стену группы или пользователя. Оттуда нам понадобиться только один файл с библиотекой
vk.php.
По задаче, нам требуется определить сколько человек находится в онлайн в текущий момент. Как такогого функционала у самой соц. сети ВКонтакте нет, зато есть общедоступное Api. Сам по себе алгоритм достаточно прост, для его реализации мы будем использовать только две функции из api:
groups.getMembers и
users.search.
Перед тем, как приступить, необходимо получить
access_token для работы с api ВКонтакте, для этого вобъём ссылку в адресную строку браузера:
http://oauth.vk.com/authorize?client_id=YOUR_CLIENT_ID&scope=wall,offline&redirect_uri=http://oauth.vk.com/blank.html&response_type=token
Соответственно
YOUR_CLIENT_ID вы должны заменить на ID своего приложения. В итоге мы получаем некую ссылку с нашим токеном. Теперь создадим файлик vk_group_online.php с таким содержимым:
<?
include "vk.php";
$access_token = "ACCESS_TOKEN";
$group_id = "GROUP_ID";
//Инициализируем класс
$vk = new Model_Vk($access_token);
//Получаем список пользователей
$page = 0;
$limit = 1000;
$online = 0;
do {
//Получаем список пользователей
$members = $vk->method("groups.getMembers", array(
"group_id" => $group_id,
"offset" => $page * $limit,
"count" => $limit
));
//Спим
sleep(1);
//Получаем данные пользователей
$users = $vk->method("users.get", array(
"user_ids" => implode(",", $members->response->users),
"fields" => "online"
), true);
//Проходим по списку, считаем онлайн
foreach( $users->response as $user ) {
if( $user->online ) {
$online++;
}
}
sleep(1);
//Увеличиваем страницу
$page++;
} while( $members->response->count > $page * $limit );
echo "Online: " . $online . PHP_EOL;
Запускаем файл через консоль, ждем выполнения работы скрипта и видим результат. Есть один минус, чем больше человек в вашей группе, тем дольше будет выполняться скрипт.
$ php vk_group_online.php