respuesta print headers curlopt_stderr php debugging curl

print - Php-Curva de depuración



respuesta curl php (5)

Me gustaría ver cuáles son los campos de publicación en la solicitud antes de enviarlo. (Para fines de depuración).

La biblioteca php (clase) que estoy usando ya está hecha (no por mí), así que estoy tratando de entenderlo.

Hasta donde puedo decir, usa curl_setopt() para establecer diferentes opciones como encabezados y curl_exec() y luego usa curl_exec() para enviar la solicitud.

¿Ideas sobre cómo ver qué campos de publicaciones se envían?


Aquí hay un código más simple para el mismo:

curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_STDERR, $fp);

donde $ fp es un identificador de archivo para generar errores. Por ejemplo:

$fp = fopen(dirname(__FILE__).''/errorlog.txt'', ''w'');

(Leer en http://curl.haxx.se/mail/curlphp-2008-03/0064.html )


Aquí hay una forma aún más simple, al escribir directamente en la salida de error php

curl_setopt($curl, CURLOPT_VERBOSE, true); curl_setopt($curl, CURLOPT_STDERR, fopen(''php://stderr'', ''w''));


Para obtener la información de una solicitud CURL, haga lo siguiente:

$response = curl_exec($ch); $info = curl_getinfo($ch); var_dump($info);


Puede habilitar la opción CURLOPT_VERBOSE :

curl_setopt($curlhandle, CURLOPT_VERBOSE, true);

Cuando se configura CURLOPT_VERBOSE , la salida se escribe en STDERR o el archivo especificado usando CURLOPT_STDERR . La salida es muy informativa.

También puede usar tcpdump o wireshark para ver el tráfico de la red.


Puede habilitar la opción CURLOPT_VERBOSE y registrar esa información en un (temporal) 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);

Luego puede leerlo luego de que curl haya realizado la solicitud:

$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";

(Originalmente respondí similar pero más extendido en una pregunta relacionada).

Más información como métricas sobre la última solicitud está disponible a través de curl_getinfo . Esta información también puede ser útil para depurar solicitudes curl. Un ejemplo de uso, normalmente lo incluiría en una función:

$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;