我正在尝试使用 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 版本按需要工作,只为 3 个 GET 请求打开单个 TCP 连接。但是 PHP cURL 版本打开的 TCP 连接数量与传递给 curl_multi_exec() 函数的 cURL 句柄数量一样多。
我究竟做错了什么?