J'ai un code simple qui fait une demande de tête pour une URL, puis imprime les en-têtes de réponse. J'ai remarqué que sur certains sites, cela peut prendre beaucoup de temps.PHP/Curl: HEAD Request prend beaucoup de temps sur certains sites
Par exemple, la demande http://www.arstechnica.com
prend environ deux minutes. J'ai essayé la même demande en utilisant un autre site Web qui fait la même tâche de base, et il revient immédiatement. Donc, il doit y avoir quelque chose que j'ai mal défini qui cause 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 le renvoie tout de suite.
Qu'est-ce qui me manque?
ce _curl_ manque est un corps de réponse, il ne sait pas que les requêtes HEAD ne renvoient que des en-têtes (pas de corps), de sorte qu'il est en attente sur le serveur pour envoyer plus de données. alors la boucle attend pendant 2 minutes, puis abandonne. – Jasen