php - 如何使用 HTTP 管道通过单个 TCP 套接字发送 PHP cURL 句柄?

标签 php curl http-pipelining

我正在尝试使用 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/

相关文章:

php - 如何测试 Laravel 5.4 中的 "creating"事件是否调用了 Eloquent 模型方法?

php - 如何将 flash 插入到 http ://www. mediafire.com 等表单中

php - 在 Yii 中返回 CActiveDataProvider

linux - 如何使用 curl 命令行工具发布 LF?

php - HTTP 请求失败! HTTP/1.1 505 HTTP 版本不受支持错误

javascript - Azure 翻译 API - 限制客户端请求

HTTP:流水线、保持事件和服务器发送事件之间的关系是什么?

php - 使用正则表达式替换 URL,但不替换图像

php - 使用相同 IP 通过 TOR 发出两个线性 cURL 请求