start microtime true header Content-type text html charset UTF-8 Запра

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?
$start = microtime(true);
header('Content-type: text/html; charset=UTF-8');
/**
* Запрашивает метод $method параметрами (...) с сервера api.vk.com
* @param string $method Название метода
* @param array (...) Массив параметр=значение
* @return array Ответ от сервера
*/
function getvk($method){
$list = func_get_args();
foreach ($list[1] as $key => $value){
$request .= $key.'='.$value.'&';
}
$request = substr($request, 0, strlen($request)-1);
return json_decode(file_get_contents(
'http://api.vk.com/method/'.
$method.'?'.
$request
), true);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test api.vk.com</title>
</head>
<body>
<?
$groupid = 2318083;
$args = array(
'group_id' => $groupid,
'count' => 1000
);
$json = getvk('groups.getMembers', $args); // первый раз узнаем количество участников
$count = $json['response']['count'];
$users = $json['response']['users'];
for ($i=1000; $i<$count; $i+=1000) { // получение списка участников группы
$args['offset'] = $i;
$json = getvk('groups.getMembers', $args);
$users = array_merge($users, $json['response']['users']);
}
$args = array(
'owner_id' => -$groupid,
'album_id' => 228601329
);
$json = getvk('photos.get', $args); // список фотографий в албоме
$i = 1;
$args = array(
'owner_id' => -$groupid,
'type' => 'photo',
'count' => 1000
);
// для каждой фотографии рассчитываются лайки
// нужно будет добавить внутренний цикл, что бы считало более 1000 лайков !!!
foreach ($json['response'] as $albumitem){
$args['item_id'] = $albumitem['pid'];
$likes = getvk('likes.getList', $args);
$diff = array_diff($likes['response']['users'], $users);
$total = count($likes['response']['users']);
$another = count($diff);
$group = $total - $another;
$res[] = "#$i Всего $total, группа $group, другие $another";
++$i;
}
// Вывод результата
echo join(";<br>\n", $res) . "<br>\n";
$peak = memory_get_peak_usage(true)/1024;
$peekM =$peak/1024;
$time = microtime(true) - $start;
echo 'Скрипт выполнялся за '.round($time,4).' сек. Пик памяти: '.$peak.'K / '.$peekM.'(M)';
?>
</body>
</html>