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

Браузер виснет при выполнении скрипта. почему?

У меня есть код который дает запросы в вк и получает списки id подписчиков групп. Я прочитал кучу литературы но ни как не могу понять как сделать что бы код выполнялся в фоновом режиме в браузере
$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);


вот код он простой. Но не нашел нужной информации как его выполнить через CLI
Помоги пожалуйста разобраться
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Это продолжение вопроса Не может больше внести txt чем 3 мб. почему?

Правильный ответ - не запускать долгоиграющие скрипты через браузер, а запускайте их через консоль (синонимы: CLI, командная строка)

1. https://www.php.net/manual/ru/features.commandline...
2. https://hackware.ru/?p=8454

Не правильный ответ - увеличить/отключить таймаут на работу скрипта
<?php
ignore_user_abort(true);
set_time_limit(0);

Этот метод может не сработать, так как тут ещё играет роль настройки веб-сервера.

Настоятельно рекомендую всё же осилить тему запуска скриптов через командную строку.

p.s. если используете php-fpm то как вариант есть ещё fastcgi_finish_request() которая позволит оставить работающий процесс в фоне и закрыть соединение с клиентом
https://ruhighload.com/Асинхронность+в+php+и+fpm
https://www.php.net/fastcgi_finish_request

этот метод тоже считаю из разряда "вредных советов".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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