5

我正在尝试使用 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 句柄数量一样多。

我究竟做错了什么?

4

1 回答 1

2

看起来这可能是 PHP 使用 PIPELINING 实现 curl_multi_* 中的一个错误。看起来他们可能不会公开所有必要的常量,以使开发人员能够在使用 PIPELINING 时指示 curl 在多请求上的行为方式。

我在这里提交了错误报告: https ://bugs.php.net/bug.php?id=68449

于 2014-11-19T11:53:34.443 回答