AlexXYZ
@AlexXYZ
O Keep Clear O

Php curl multi user requests?

Всем привет.

Есть linux/apache (2.4.23)/php (5.6.27)/ curl (7.50.3) -сервер. В нём есть запросы, которые перенаправляются с помощью curl на другой сервер. Ну очень медленно работает проброс. После тестирования нагрузки на нескольких пользователях выяснилось, что запросы через curl идут по одному. Т.е. чтобы следующий пользователь выполнил curl запрос, то php ждёт пока отработает запрос первого пользователя. Создаётся впечатление, что curl не работает параллельно на нескольких пользователях. Так ли это и можно ли это как-то обойти?

P.S. - уточнение:
Я знаю, что есть curl_multi_init / curl_multi_exec, но насколько я понимаю, то это предназначено на случай, когда одному пользователю надо выполнить несколько параллельных запросов в одной сессии. Мне же нужно, чтобы curl запускался параллельно в нескольких сессиях.
  • Вопрос задан
  • 479 просмотров
Решения вопроса 1
@remzalp
Программер чего попало на чем попало
1. Убедитесь, что удаленный сервер на ваш комп умеет отдавать одновременно несколько страниц. Например апачевский ab:
ab -c 10 -n 100 http://localhost:8080/
Аккуратно! Сопоставимо с ДоС атакой по нагрузке, убедитесь, что с той стороны будут рады Вас принять. Будет запрашивать в несколько потоков один и тот же урл.

2. Убедитесь, что локальному серверу хватает мощности, чтобы просто отдавать страницы в несколько потоков тем же ab

3. Попробуйте не модулем PHP работать, а вызывать через php.net/manual/ru/function.passthru.php
НЕБЕЗОПАСНО, только теста ради.

4. Попробуйте в тестовом скрипте не стартовать сессии (не уверен, что в этом причина, но бывает блокировка).

И когда исключите всё за пределами cUrl, уже можно будет ковыряться с ним.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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