Не работает редирект, сервер зависает

Уважаемые профи, помогите пожалуйста с глобальной проблемой. Мне уже три специалиста сказали, что проблема в хостинге, но а хостинг мне пишет, что проблема в коде. Уже испробовали кучу вариантов написания данного функционала. Полный код ниже. Отрабатывает весь функционал кроме РЕДИРЕКТА!!! И в момент загрузки скрипта страница грузится пару секунд, в это время отрубается FTP (т.е. срипт зависает сервер), загрузка страницы останавливается и редирект не происходит. Зато в базе всё успешно добавилось, ответ от серверов успешно получен, в логах всё идеально и успешно….странности. Если убрать функционал cURL из скрипта, то всё работает и РЕДИРЕКТ тоже, но связи с серверами естественно не будет, а всё остальное работает. Проблема в cURL явно же вроде. Сможете пожалуйста помочь/подсказать в чём проблема???

$availableIPs = ‘’;
            $multi = curl_multi_init();
            $handles = [];

        foreach ($serversIP as $srv) {
            $ip = $srv['ip'];

            if (!isPortOpen($ip, 1800, 0.5)) {
                error_log("Сервер недоступен (порт закрыт): $ip:1800\n", 3, 'error.log');
                continue;
            }

            $ch = curl_init("http://$ip:1800/add_uuid");
            curl_setopt_array($ch, [
                CURLOPT_POST            => true,
                CURLOPT_POSTFIELDS      => $jsonData,
                CURLOPT_HTTPHEADER      => ['Content-Type: application/json'],
                CURLOPT_RETURNTRANSFER  => true,
                CURLOPT_TIMEOUT         => 2,
                CURLOPT_CONNECTTIMEOUT  => 1,
            ]);

            curl_multi_add_handle($multi, $ch);
            $handles[] = ['handle' => $ch, 'ip' => $ip]; // сохраняем как массив
        }

        // Запускаем все запросы одновременно
        $running = null;
        do {
            curl_multi_exec($multi, $running);
            curl_multi_select($multi);
        } while ($running > 0);

        // Обработка ответов
        foreach ($handles as $item) {
            $ch = $item['handle'];
            $ip = $item['ip'];

            $response = curl_multi_getcontent($ch);
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

            curl_multi_remove_handle($multi, $ch);
            curl_close($ch);

            if ($httpCode == 200) {
                $availableIPs .= $ip . ' ';
                error_log("Ответ сервера $ip: HTTP $httpCode | $response\n", 3, 'error.log');
            } 
            else {
                error_log("Ошибка при отправке на $ip: HTTP $httpCode | $response\n", 3, 'error.log');
            }
        }

        curl_multi_close($multi);
        $availableIPs = rtrim($availableIPs, ' ');

        // Обновляем IP в подписке
        DB('UPDATE subscr_user SET access_ip=? WHERE uuid=? LIMIT 1', $availableIPs, $uuid_gen);

        // Чистим буферы вывода
        while (ob_get_level()) ob_end_clean();

        // Редирект
        header('Location: /my_servers');
        exit();

Ответы (1 шт):

Автор решения: Ипатьев

По этому невнятному писанию что-то сказать сложно, но в целом проблема "сервер зависает от редиректа" обычно вызывается циклическим редиректом. Например /my_servers посылает обратно на этот скрипт, этот скрип снова отрабатывает, посылает на /my_servers, откуда снова редирект - и так далее.

Надо смотреть вкладку Сеть в Инструментах разработчика, и ставить условие в коде, чтобы не редиректил куда попало

→ Ссылка