Задать вопрос
  • PHP Почему выполнение cURL-запроса блокирует все другие запросы cURL?

    SystemX
    @SystemX
    Программирование и администрирование сайт/сервер
    Curl запрос сам по себе не блокирует запросы curl в других скриптах сервера!
    А вот session_start() в начале скрипта блокирует сессию php если она хранится на диске. И если запустить такой скрипт и в нем будет долгий curl запрос или просто скрипт будет долго выполняться, то файл сессии будет заблокирован в это время и другой скрипт с session_start() будет ждать пока тот освободится, если ему нужен тот же файл сессии.
    Решение:
    <?php
    session_start();
    $mail = $_SESSION['mail']; // пишем или читаем данные сессии
    session_write_close();
    ?>

    можете вызвать этот блок вначале, а затем делать длительные запросы или вычисления (здесь конечно уже возникает вопрос почему это делается в общем потоке, но не суть) и скрипты не будут друг друга блокировать на уровне сессии.
    Можете данный блок вызвать в конце скрипта если нужно записать результаты запроса или вычислений в сессию юзера, но учтите, что session_start(); нужно вызывать до любого вывода в браузер!
    Ответ написан
    Комментировать