Как отправить дескрипторы 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