У меня проблема с curl в PHP, которую я не могу понять. У меня есть веб-сервер (Apache), который общается с веб-службой через HTTPS на другом сервере Apache. Мы назовем их «сервер A» и «сервер B».
Проблема, с которой я сталкиваюсь, состоит в том, что сервер A устанавливает только одно соединение за раз, используя curl с сервером B на браузер, подключенный к серверу A. Я не уверен, является ли это проблемой curl или apache. В нескольких местах я видел ссылки на максимальное соединение для каждого сервера, равное одному для клиента curl, но я не могу проверить, существует ли он.
Сценарий:
- Я загружаю двадцать разных страниц в трех разных браузерах, каждая в своей вкладке / окне в этом браузере. Я попробовал Firefox, Chrome и Konqueror одновременно. В Firefox были значительно увеличены все ограничения на количество подключений к серверу: config
- Все эти страницы размещены на сервере A, и загрузка была начата почти одновременно
- Каждый экземпляр страницы на сервере A общается с сервером B, используя curl
- Один вызов этого типа на сервер B обычно занимает ~ 10 секунд
- Только одно TCP-соединение от A-> B открыто одновременно для каждого браузера, подключенного к серверу A (всего 3 от A-> B)
- Я проверил, что несколько соединений из браузеров открыты к серверу A
AFAICT все запросы сериализуются. Я могу убедиться, что из браузера в сервер A открыто несколько подключений, но из A-> B в браузере, подключенном к A., открыто только одно https-соединение для браузера *.
Сервер B может обрабатывать много соединений одновременно, но по какой-то причине сервер A не будет открывать несколько соединений с сервером B. Я попытался отправить «Соединение: закрыть» с обоих серверов A и B, чтобы посмотреть, поможет ли это. Это не так.
Я обнаружил, что многие люди говорят о создании нескольких асинхронных подключений для одного сценария, но я хочу открыть несколько подключений в разных экземплярах страницы к одному внешнему серверу.
Есть идеи, что это за проблема или как ее исправить?