Как отправить дескрипторы PHP cURL через один сокет TCP, используя HTTP конвейерную обработку?

Я пытаюсь использовать функцию PHP CURL HTTP Pipelining для выполнения нескольких запросов через одно TCP-соединение. Ссылка на эту страницу http://www.php.net/manual/en/function.curl-multi-setopt.php Я включаю конвейерную функцию для curl_multi_exec(), добавляя:

curl_multi_setopt ($ mh, CURLMOPT_PIPELINING, 1);

Я не хочу публиковать здесь большой список источников, но вы можете легко просмотреть или просмотреть полный пример из моего github здесь https://github.com/anovikov1984/pipelining-example

Для мониторинга TCP-соединений я использую команду netstat -t -u -c в другом сеансе консоли.

В моем репо, о котором я упоминал выше, есть два сценария. Один для Ruby и один для PHP. Версия Ruby работает как нужно и открывает только одно TCP-соединение для 3 запросов GET. Но версия PHP cURL открывает столько соединений TCP, сколько количества дескрипторов cURL, переданных функции curl_multi_exec().

Что я делаю неправильно?

1 ответ

Похоже, что это может быть ошибкой в ​​реализации PHP curl_multi_* с PIPELINING. Похоже, что они могут не отображать все КОНСТАНТЫ, необходимые для того, чтобы дать возможность разработчику диктовать, как curl ведет себя в мультизапросе при использовании PIPELINING.

Я отправил отчет об ошибке здесь: https://bugs.php.net/bug.php?id=68449

Другие вопросы по тегам