Ho un codice semplice che esegue una richiesta di testa per un URL e quindi stampa le intestazioni di risposta. Ho notato che su alcuni siti, questo può richiedere molto tempo per essere completato.PHP/Curl: la richiesta HEAD richiede molto tempo su alcuni siti
Ad esempio, la richiesta di http://www.arstechnica.com
richiede circa due minuti. Ho provato la stessa richiesta utilizzando un altro sito web che svolge la stessa attività di base e torna immediatamente. Quindi ci deve essere qualcosa che ho impostato in modo errato che sta causando questo ritardo.
Ecco il codice che ho:
$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);
Ecco un link al sito web che fa la stessa funzione: http://www.seoconsultants.com/tools/headers.asp
Il codice di cui sopra, almeno sul mio server, richiede due minuti per recuperare www.arstechnica.com, ma il servizio al link qui sopra lo restituisce immediatamente.
Cosa mi manca?
quello _curl_ che manca è un corpo di risposta, che non sa che le richieste HEAD restituiscono solo le intestazioni (senza corpo) in modo che sia in attesa per il server di inviare ulteriori dati. così arricciato aspetta per 2 minuti e poi si arrende. – Jasen