par
binboum » 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 :
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 :
HTTP/1.1 200 OK
Date: xxxxxxxxxxxxxxxxxx
Server: xxxxxxxxxxxxxxxxxxxxx
X-Powered-By: xxxxxxxxxxxxxxx
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
et pas filename...
Get_Header() = trop leng.
Donc merci de m'aidé sur la technique fsockopen.
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 :
[php]
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;
}
[/php]
j'obtiens bien :
[quote]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;[/quote]
[php]
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;
} [/php]
J'obtiens sa :
[quote]HTTP/1.1 200 OK
Date: xxxxxxxxxxxxxxxxxx
Server: xxxxxxxxxxxxxxxxxxxxx
X-Powered-By: xxxxxxxxxxxxxxx
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
[/quote]
et pas filename...
Get_Header() = trop leng.
Donc merci de m'aidé sur la technique fsockopen.