PHP Почему выполнение cURL-запроса блокирует все другие запросы cURL?
Всем привет! Дано: некая страница на php с формой, куда пользователи могут авторизоваться. Форма частично использует cURL для получения данных, которые может выбрать пользователь. При отправке этой формы инициируются запрос к стороннему API (так же через cURL) и ожидается ответ API. Запросы обрабатываются около минуты.
Проблема: когда Пользователь #1 создает задачу инициируется запрос cURL к стороннему API, и пока этот запрос не получит ответ, задачи всех остальных пользователей висят и ждут. С учетом того, что форма для подгрузки возможных значений также использует курл, то активный запрос вешает даже формирование формы у других пользователей.
Я попробовал использовать curl_multi_*, но это не дало ожидаемого результата. Как это решить? Можно ли заставить cURL отрабатывать изолированно, т.е. не блокировать работу другим пользователям сервиса?
При отправке этой формы инициируются запрос к стороннему API (так же через cURL) и ожидается ответ API. пока этот запрос не получит ответ, задачи всех остальных пользователей висят и ждут.
Каким образом настроен php? По классике через nginx/apache? - в таком случае проблема не на стороне php приложения, т.к. каждый запрос будет создавать новый процесс php.
Или там что-то вроде phpDaemon и приложение php является веб сервером само по себе? - в таком случае надо смотреть в код, каким образом реализована обработка нескольких запросов
Каким образом реализовано стороннее апи? Может быть оно может только один коннект принимать?
Как вы проверяли проблему, что несколько пользователей блокируют друг друга? Если вы пробовали залогиниться в разных вкладках одного браузера - то скорее всего проблема в блокировке файла сессии, а не в блокировке разных пользователей.
Коллеги, благодарю Вас всех за неравнодушность к проблеме и Ваши комментарии :) Путем экспериметов проблема была выялена и заключалась в том, что на api-сервере был debug-mode, который разрешает только один поток.