PHP / Curl: TÊTE de Demande prend du temps sur certains sites

J'ai un code simple qui fait une tête de requête d'URL et puis imprime les en-têtes de réponse. J'ai remarqué que sur certains sites, cela peut prendre un certain temps pour terminer.

Par exemple, en demandant http://www.arstechnica.com prend environ deux minutes. J'ai essayé la même demande à l'aide d'un autre site web qui fait la même tâche de base, et il vient de revenir immédiatement. Donc il doit y avoir quelque chose que j'ai mal réglé qui est à l'origine de ce retard.

Voici le code que j'ai:

$ch = curl_init();
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt ($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);

//Only calling the head
curl_setopt($ch, CURLOPT_HEADER, true); //header will be at output
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); //HTTP request is 'HEAD'

$content = curl_exec ($ch);
curl_close ($ch);

Voici un lien vers le site web qui fait la même fonction: http://www.seoconsultants.com/tools/headers.asp

Le code ci-dessus, au moins sur mon serveur, prend deux minutes pour récupérer www.arstechnica.com mais le service sur le lien ci-dessus renvoie tout de suite.

Ce qui me manque?

  • ce que curl est manquant est un corps de réponse, il ne sait pas que la TÊTE de demandes de retourner uniquement les en-têtes (pas de corps), il est donc en attente sur le serveur pour envoyer plus de données. donc curl attend 2 minutes, puis abandonne.
InformationsquelleAutor Ian | 2009-04-20