262 votes

Php - Débogage Curl

J'aimerais savoir quels sont les champs de publication de la demande avant de l'envoyer. (À des fins de débogage).

La bibliothèque php que j'utilise est déjà faite (pas par moi), alors j'essaie de la comprendre.

Autant que je sache, il utilise curl_setopt() pour définir différentes options telles que les en-têtes, etc., puis il utilise curl_exec() pour envoyer la demande.

Des idées sur la façon de voir quels champs de publication sont envoyés?

482voto

hakre Points 102271

Vous pouvez activer l' CURLOPT_VERBOSE option et journal d'information à un (temporaire) CURLOPT_STDERR:

// CURLOPT_VERBOSE: TRUE to output verbose information. Writes output to STDERR, 
// or the file specified using CURLOPT_STDERR.
curl_setopt($curlhandle, CURLOPT_VERBOSE, true);

$verbose = fopen('php://temp', 'rw+');
curl_setopt($curlHandle, CURLOPT_STDERR, $verbose);

Vous pouvez alors lire si après curl a fait la demande:

$result = curl_exec($curlHandle);
if ($result === FALSE) {
    printf("cUrl error (#%d): %s<br>\n", curl_errno($curlHandle),
           htmlspecialchars(curl_error($curlHandle)));
}

rewind($verbose);
$verboseLog = stream_get_contents($verbose);

echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";

(Je l'ai d'abord répondu similaire mais plus étendu dans une question connexe.)

Plus d'informations, comme la métrique de la dernière demande est disponible via curl_getinfo. Cette information peut être utile pour le débogage curl demandes, trop. Un exemple d'utilisation, je l'aurais fait normalement enveloppez-la dans une fonction:

$curlVersion = curl_version();
extract(curl_getinfo($curlHandle));
$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{$curlVersion['version']}
EOD;

196voto

netom Points 709

Vous pouvez activer l'option CURLOPT_VERBOSE :

 curl_setopt($curlhandle, CURLOPT_VERBOSE, true);
 

Vous pouvez également utiliser tcpdump ou wireshark pour surveiller le trafic réseau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X