IT技术博客大学习 共学习 共进步

PHP重用curl句柄, CURLOPT_HTTPGET的BUG

idea's blog 2011-10-13 13:55:38 浏览 2,962 次

重用一个CURL句柄时, 发现curl_setopt($ch, CURLOPT_HTTPGET, TRUE) 不起作用. 期望在调用这条语句之后发起请求, 应该发送的是GET, 但看服务器log, 却使用了和前一次请求相同的HTTP方法.

PHP脚本:

<?php
$url = 'http://www.ideawu.net/';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_exec($ch);

curl_setopt($ch, CURLOPT_HTTPGET, true); // 错误! BUG
curl_exec($ch);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); // 正确
curl_exec($ch);
?>

web server log:

124.127.130.50 "2011-10-12 18:55:09" "POST / HTTP/1.1" 200 3516 "-" www.ideawu.net
124.127.130.50 "2011-10-12 18:55:09" "POST / HTTP/1.1" 200 3516 "-" www.ideawu.net
124.127.130.50 "2011-10-12 18:55:09" "GET / HTTP/1.1" 200 3516 "-" www.ideawu.net

这个BUG目前还没找到相关的资料.

补充: 不仅仅是CURLOPT_HTTPGET, CURLOPT_POST也有同样的问题. 所以, 结论是: 只有CURLOPT_CUSTOMREQUEST才是正确的方法.

建议继续学习

  1. Rolling cURL: PHP并发最佳实践 (阅读 11,363)
  2. curl 命令使用cookie (阅读 9,845)
  3. curl检查访问网页返回的状态码 (阅读 7,702)
  4. PHP用CURL伪造IP和来源 (阅读 5,306)
  5. curl测试下载速度 (阅读 5,184)
  6. cURL基础教程 (阅读 4,924)
  7. 修改系统最大文件句柄数 (阅读 4,844)
  8. curl快速实现网速测试 (阅读 4,703)
  9. curl常用功能简介 (阅读 3,985)
  10. 软件推荐:curl (阅读 3,623)