我正在尝试使用 PHP cURL HTTP 管道功能通过单个 TCP 连接执行多个请求。引用本页http://www.php.net/manual/en/function.curl-multi-setopt.php我通过添加以下内容为 curl_multi_exec() 启用流水线操作:
curl_multi_setopt($mh, CURLMOPT_PIPELINING, 1);
我不想在这里发布大量源代码 list ,但您可以在我的 github 此处轻松查看或 checkout 完整示例 https://github.com/anovikov1984/pipelining-example
为了监控 TCP 连接,我在另一个控制台 session 中使用“netstat -t -u -c”命令。
在我上面提到的我的 repo 中有两个脚本。一种用于 Ruby,一种用于 PHP。 Ruby 版本可以正常工作,并且只为 3 个 GET 请求打开一个 TCP 连接。但是 PHP cURL 版本打开的 TCP 连接数与传递给 curl_multi_exec() 函数的 cURL 句柄数一样多。
我做错了什么?
最佳答案
看起来这可能是 PHP 使用 PIPELINING 实现 curl_multi_* 时的错误。看起来他们可能不会公开所有必要的常量,以使开发人员能够在使用 PIPELINING 时规定 curl 在多请求上的行为方式。
我已经在这里提交了错误报告: https://bugs.php.net/bug.php?id=68449
关于php - 如何使用 HTTP 管道通过单个 TCP 套接字发送 PHP cURL 句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24599720/