Найти общих друзей между двумя профилями. Друзья могут быть общими как в первом поколении (прямые друзья), так и во втором, третьем и так далее.
- Первый профиль (ссылка) - source.
- Второй профиль (ссылка) - target.
Ближайшее множество профилей, которые связывают двух данных по списку друзей.
- Проверить введённые данные.
- Получить индентификаторы пользователей.
- Получить список друзей source.
- Если нет друзей, то вывести ошибку, иначе следующий шаг.
- Получить список друзей target.
- Если нет друзей, то вывести ошибку, иначе следующий шаг.
- Проверить есть ли source в друзьях target. Если есть, то шаг 10. Иначе шаг 8.
- Перебрать массив друзей target, где каждый друг считать за target.
- Перейти к шагу 5 (цикл).
- Вывести цепочку source -> друг 1 -> друг 2 -> друг N -> target.
- Конец.
Строка со списком имён пользователей, которые связывают двух данных.
- Склонировать репозиторий или скачать файл vkFindMutualFriends.php в рабочую папку.
- Получить сервисный ключ доступа на сайте https://vk.com/apps?act=manage в настройках созданного вами ранее приложения. Можно использовать токен от вашей странице для получения данных в приватных страницах.
- Задать ключ в скрипте в качестве константы SERVICE_KEY.
- По желанию поменять значения других констант.
- Убедиться, что у скрипта есть право на создание файлов по заданному пути LOG_FILE.
Из консоли командой php vkFindMutualFriends.php source target , где source и target ссылки на профили двух пользователей ВКонтакте.
С помощью веб-сервера перейти по ссылке %ваш_сайт%/vkFindMutualFriends.php?sid=%sid&tid=%tid , где %sid и %tid нужные ссылки на профили. Вместо ссылок можно указывать индентификаторы с приставкой id или без.
- Лёгкость в использовании
- Простой алгоритм
- Долгое время выполнения из-за частотных ограничений VKAPI
- Требует много ресурсов и времени при проверки глубиной от 3 и более
Данный скрипт был написан ради тренировки навыков программирования и не является окончательным продуктом. Идея была зарождена спонтанно и реализована в учебных целях за короткое время "на коленках". Однако решил выложить в публичный доступ в надежде на то, что алгоритм будет полезен новычкам при начальном этапе работы с VK API. Все предложения и отзывы можете оставлять в issues.
- Увеличить продуктивность с помощью метода execute.
- С каждым новым циклом освобождать память от ненужных более массивов друзей.