@rusindex
Начинающий програмист

Не может больше внести txt чем 3 мб. почему?

Есть код который запрашивает ID пользователей групп. Он отлично работает с группами до 150 тысяч. пользователей а дальше почему то вообще перестает работать

$page = 0;
$limit = 1000; 

do 	{
$offset = $page * $limit;
$getlist = vkapi('groups.getMembers?group_id='.$database_result['guid'].'&sort=id_asc&offset='.$offset.'&count=1000&access_token='.$token.'&v=5.103'); 
$json_get_all = json_decode($getlist, true);  $list = $json_get_all['response']['items']; $countcomm = $json_get_all['response']['count'];
if (!is_array($collectuids)) { $collectuids = $list; }
if (is_array($collectuids)) { $previos = $collectuids;  $collectuids = array_merge($previos, $list); }
++$page; usleep(335000);
} 

while($countcomm > $offset + $limit );
$uniqs = array_unique($collectuids);
$ss = serialize($uniqs); $wrguids = fopen("service/1$screen_name.txt", "w+b"); fwrite($wrguids,$ss); fclose($wrguids);


Дальше он записывает эти ID в service/1$screen_name.txt не записывает больше 157 000 пользовательских ID .
Суть вопроса код работает с группами до 150 тысяч человек но дальше отказывается выполняться. Почему?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Тут скорее проблема в том что скрипту не хватает памяти чтобы вместить все $collectuids, так как никаких ограничений на выгрузку groups.getMembers vk не накладывает, и я без проблем выгружал списки участников сообществ по 1млн+ участников.

Быстрый хак - увеличить скрипту памяти при выполнении, а так же включить отображение ошибок
<?php
ini_set('display_errors', 1);
error_reporting(-1);

ini_set('memory_limit', '512M'); //512Mb

//тут ваш код


p.s. так же если скрипт запускается не через CLI, а через браузер, то он может вылетать просто по таймауту соединения.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
А что сам Vk говорит в части лимитов апи? Скорее всего дело там. Если так то выкачивайте кусками по 100 000
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы