再会!
请求页面时,cURL 的运行速度非常慢。我知道这不是所请求的页面,因为该页面立即返回到浏览器中。
我注意到的两件事
- starttransfer_time 通常接近 20
- local_port 似乎每次都会改变。这正常吗?
- 有时,cURL 会立即响应
我有以下代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, false);
$output = curl_exec($ch);
curl_close($ch);
回显curl_getinfo()给了我以下内容
[url] => http://127.0.0.1:80/wpengine/?json=t
[content_type] => text/html; charset=iso-8859-1
[http_code] => 302
[header_size] => 215
[request_size] => 64
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 17.238
[namelookup_time] => 0
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 221
[speed_download] => 12
[speed_upload] => 0
[download_content_length] => 221
[upload_content_length] => 0
[starttransfer_time] => 17.238
[redirect_time] => 0
[certinfo] => Array
(
)
[primary_ip] => 127.0.0.1
[primary_port] => 80
[local_ip] => 127.0.0.1
[local_port] => 51875
[redirect_url] =>
谁能给我一些关于如何弄清楚发生了什么事的指示?
以下是 Apache 访问日志中的几行
127.0.0.1 - - [06/Dec/2013:12:01:22 -0500] "GET /wpengine/?json=t HTTP/1.1" 302 221
127.0.0.1 - - [06/Dec/2013:12:01:12 -0500] "GET /community HTTP/1.1" 200 6266
127.0.0.1 - - [06/Dec/2013:12:01:22 -0500] "GET /public/js/jquery.js?b=10 HTTP/1.1" 304 -
这主要是因为Expect: 100-continue
header CURL在处理大的POST数据时发送到服务器,而服务器恰好不支持此功能。您可以通过添加来确认-vv
for curl
命令行并查看输出。
要解决这个问题,您可以
- 修复您的服务器以支持
Expect: 100-continue
标头,或
- 强制curl不通过add发送它
-H "Expect:"
选项(在php中,可以参考这个答案:如何阻止 cURL 使用 100 Continue? https://stackoverflow.com/questions/14158675/how-can-i-stop-curl-from-using-100-continue).
关于的链接Expect: 100-continue
:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3 https://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3
https://support.urbanairship.com/entries/59909909--Expect-100-Continue-Issues-and-Risks https://support.urbanairship.com/entries/59909909--Expect-100-Continue-Issues-and-Risks
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)