Bạn có thể bật CURLOPT_VERBOSE
tùy chọn và đăng nhập thông tin đó vào (tạm thời) 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);
Sau đó, bạn có thể đọc nó sau khi curl đã thực hiện yêu cầu:
$result = curl_exec($handle);
if ($result === FALSE) {
printf("cUrl error (#%d): %s<br>\n", curl_errno($handle),
htmlspecialchars(curl_error($handle)));
}
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
(Ban đầu tôi trả lời tương tự nhưng mở rộng hơn trong một câu hỏi liên quan.)
Thông tin thêm như số liệu về yêu cầu cuối cùng có sẵn thông qua curl_getinfo
. Thông tin này cũng có thể hữu ích để gỡ lỗi các yêu cầu curl. Một ví dụ sử dụng, tôi thường sẽ bọc nó thành một hàm:
$version = curl_version();
extract(curl_getinfo($handle));
$metrics = <<<EOD
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;