Доброго времени суток господа. Нужна ваша помощь в легкой задаче, увы, для меня из за нехватки опыта это оказалось сложным.
Работаю с VK API. Произвожу поиск групп по названию через groups.search (к примеру музыка/игры/фильмы), получаю список перебором foreach ($data1['response'] as $item) и вывожу название и картинку группы.
Затем мне нужно получить количество участников для каждой группы, это можно сделать через метод groups.getMembers введя group_id, но group_idя могу получить только во время перебора foreach ($data1['response'] as $item).
Если я так сделаю, то в принципе все работает, но скорость существенно падает, и страница начинает грузится до 3-5 секунд. Мне даже кажется, что скрипт не успевает до конца отрабатывать, потому что на некоторые группы я не получаю количества участников.
Может быть я что-то не так делаю, а мне кажется, что это так, и это можно реализовать по другому, но как я пока не знаю. Буду благодарен любой помощи или подсказке в какую сторону копать.
Вот мой код:
<?php
//Получаю список групп
$url1 = file_get_contents("https://api.vk.com/method/groups.search?q=".$_POST['vkgroup']."&access_token=*MYTOKEN*");
//ССылка на получение количество пользователей
$url2 = "https://api.vk.com/method/groups.getMembers?group_id=";
$data1 = json_decode($url1,true);
foreach ($data1['response'] as $item) {
//Получаю список участников в группе
$url3 = file_get_contents($url2.$item['screen_name']);
$data2 = json_decode($url3,true);
//Получаю цифрой количество участников
$cuser=$data2['response']['count'];
//Вывожу количество участников
echo $cuser;
//Вывожу картинку группы
echo "<img src=".$item['photo']."> ";
//Вывожу название группы
echo $item['name']."<br>";
}
?>
Вот такой (достаточно кривой, но работающий) пример у меня получился:
var f = [];
var i = 0;
$("li").each(function() {
var gid = $(this).attr("data-gid");
var q = i;
i++;
var groupInfoUrl = "https://api.vk.com/method/groups.getMembers?callback=f[" + q + "]&v=5.60&group_id=" + gid;
f[q] = function(result) {
$("li").eq(q).find('span').text(result.response.count);
}
var script = document.createElement('SCRIPT');
script.src = groupInfoUrl;
document.getElementsByTagName("head")[0].appendChild(script);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul>
<li data-gid="20629724">https://vk.com/habr - <span>...</span></li>
<li data-gid="71741545">https://vk.com/googlerussia - <span>...</span></li>
</ul>
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости