@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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы