您可以启用CURLOPT_VERBOSE选项并将该信息记录到(临时)CURLOPT_STDERR:// CURLOPT_VERBOSE: TRUE to output verbose information. Writes output to STDERR,
// or the file specified using CURLOPT_STDERR.curl_setopt($handle, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');curl_setopt($handle, CURLOPT_STDERR, $verbose);
然后,您可以在curl完成请求后读取它:$result = curl_exec($handle);if ($result === FALSE) {
printf("cUrl error (#%d): %s
\n", curl_errno($handle),
htmlspecialchars(curl_error($handle)));}rewind($verbose);$verboseLog = stream_get_contents($verbose);echo "Verbose information:
\n
", htmlspecialchars($verboseLog), "\n";
(我最初回答相似,但范围更广在一个相关的问题中)
有关上一次请求的指标等更多信息可通过curl_getinfo..此信息对于调试curl请求也很有用。作为一个用法示例,我通常会将其包装成一个函数:
$version = curl_version();
extract(curl_getinfo($handle));
$metrics = <<
URL....: $url
Code...: $http_code ($redirect_count redirect(s) in $redirect_time secs)
Content: $content_type Size: $download_content_length (Own: $size_download) Filetime: $filetime
Time...: $total_time Start @ $starttransfer_time (DNS: $namelookup_time Connect: $connect_time Request: $pretransfer_time)
Speed..: Down: $speed_download (avg.) Up: $speed_upload (avg.)
Curl...: v{$version['version']}
EOD;