Lire un header distant
Posté : 18 déc. 2010, 18:37
Bonsoir,
J'essaye de lire un header, malhereusement j'essaye d'optimiser la vitesse, car 4,5 secondes c'est trop long.
En curl tout fonctionne mais c'est leng :
Get_Header() = trop leng.
Donc merci de m'aidé sur la technique fsockopen.
J'essaye de lire un header, malhereusement j'essaye d'optimiser la vitesse, car 4,5 secondes c'est trop long.
En curl tout fonctionne mais c'est leng :
function curlGetHeader ($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$page = curl_exec($ch);
curl_close($ch);
$header = substr($page, 0, strpos($page, "\r\n\r\n"));
return $header;
}
j'obtiens bien :HTTP/1.1 200 OK
Date: xxxxxxxxxxxxxx
Server: xxxxxxxxxxxxxxxxx
X-Powered-By: xxxxxxxxxxxxxxxxxxx
Content-Length: xxxxxx
;
Content-Disposition: attachment; filename="libraie windows.dll"
Connection: close
Content-Type: application/force-download;
function socketGetHeaders($url){
$url = parse_url($url);
$url['port'] = isset($url['port']) ? $url['port'] : '80';
$url['path'] = isset($url['path']) ? $url['path'] : '/';
$fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 10);
if (!$fp) {
echo "Erreur de socket: $errno - $errstr<br />\n";
return FALSE;
} else {
$header = "GET ".$url['path']." HTTP /1.1\r\n";
$header .= "Connection: Close\r\n\r\n";
$header = "GET ".$url['path']." HTTP /1.1\r\n";
$header .= "Accept: */*\r\n";
$header .= "Cache-Control: no-cache\r\n";
$header .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.2) Gecko/2008090514 Firefox/3.0.2\r\n";
$header .= "Host: $s_Host\r\n";
$header .= "Connection: Close\r\n";
fputs($fp, $header);
}
fputs($fp, $header);
$page = '';
while (!feof($fp)){
$page.= fgets($fp, 1280);
if(strpos($page, "\r\n\r\n")) break;
}
fclose($fp);
return $page;
}
J'obtiens sa :et pas filename...HTTP/1.1 200 OK
Date: xxxxxxxxxxxxxxxxxx
Server: xxxxxxxxxxxxxxxxxxxxx
X-Powered-By: xxxxxxxxxxxxxxx
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
Get_Header() = trop leng.
Donc merci de m'aidé sur la technique fsockopen.