Передо мной стояла задача следить за активностью пользователей известной социальной сети.
Моей задачей было собрать данные о количестве пользователей онлайн в определенной группе или сообществе.
Инструменты
Поскольку я сам занимаюсь веб-разработкой, я использовал следующие инструменты:- PHP 5 (Zend Framework)
- Вк API
- Крон
Архитектура
Реализация условно может быть разделена на 2 части.Первый — это скрипт, который находит количество онлайн-пользователей на основе идентификатора группы и записывает его в базу данных.
Второе — админ-панель, которая позволяет добавлять новые группы для мониторинга и просматривать статистику по уже добавленным группам.
Чтобы статистика была актуальной, необходимо как можно чаще отслеживать состояние группы в текущий момент времени.
Скрипт должен быть помещен в Cron, пусть вызывается каждые 5 минут.
Обзор API Вк
Если с админкой все более-менее понятно, то со скриптом сбора статистики не совсем понятно.Ознакомившись с методами, предоставляемыми API, я прихожу к первому решению.
Первое решение (неверное) Использование методов groups.getMembers , пользователи.
get Получаем список участников группы и их статус – онлайн или офлайн.
Далее мы подсчитываем, сколько пользователей онлайн.
Это просто.
Однако эта кажущаяся простота приводит к ряду проблем.
Все было бы хорошо, если бы у вас были небольшие группы (до 1000 человек).
В противном случае мы упираемся в ограничения API — одновременно можно получить информацию только о 1000 пользователях.
Зачем нам это ограничение? Вы можете вызвать метод в цикле, но нет. Вызовы API разрешены не более 3 запросов в секунду.
Давайте посчитаем примерное количество запросов, которое понадобится.
Возьмем сообщество хабрахабра Вк.
У него более 40 000 пользователей, поэтому нам понадобится около 40 запросов, чтобы получить участников сообщества, и 40 запросов, чтобы узнать их статус.
Пойдем искать новое решение.
Второе решение (правильное) Находим метод в документации выполнять
Универсальный метод, позволяющий запускать последовательность других методов, сохраняя и фильтруя промежуточные результаты.На вход он принимает строку с кодом, написанным на так называемом VKScript (аналог javascript).
Проблема только в том, что нет вменяемой документации по этому методу и самому языку.
Вероятно решение найдено, поэтому можно углубиться в изучение API Вк и VKScript в частности.
Работа с API
Скачайте класс для работы с API, предложенный разработчиками.Я просто привел его в более приемлемую форму, чтобы он соответствовал стилю кодирования, используемому в Zend Framework. Класс API
Теги: #vk.com api #php5 #php #php #API ВКонтакте<Эphp class Vkapi_Model_Api {