Задать вопрос
@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
Помоги пожалуйста разобраться
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽