PHP : récupérer les headers HTTP

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


wullon
WRInaute accro
WRInaute accro
 
Messages: 3918
Inscription: 18 Sep 2004

PHP : récupérer les headers HTTP

Message le Mar Fév 22, 2005 23:00

Bonjour,
débutant en php, j'aimerais des renseignements pour savoir comment récupérer le Header HTTP renvoyé lors de la demande d'un fichier sur un serveur HTTP (j'ai cherché sur google, mais rien de compréhensible pour moi ^^).
En fait, j'aimerais récupérer la taille d'un fichier distant donnée par le Header HTTP (entra autre).

Pour simplifier, exactement comme le fait ce script là :
http://www.webrankinfo.com/outils/header.php.

Si on pouvait me donner plus d'infos (voire les sources du header.php ^^), ce serait réellement bienvenue.

Merci d'avance.


Digit
WRInaute impliqué
WRInaute impliqué
 
Messages: 613
Inscription: 18 Avr 2003

Message le Mer Fév 23, 2005 0:21

Parfois il n'est pas fait mention du header content-length, c'est lorsque la connexion est rompue que le fichier est "fini" et qu'on peut en déduire la taille.
Donc d'un point de vue perfs, le fichier a transité complètement sur le réseau avant d'avoir pu connaître sa taille


maxttb
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 477
Inscription: 27 Fév 2004

Message le Mer Fév 23, 2005 9:19

Pour récupérer les header, il suffit d'ouvrir une socket sur le serveur à contacter. Ensuite, tu fais:
Code: Tout sélectionner
HEAD /uri/a/retrouver HTTP/1.1

et tu lis tout ce que renvoit cette commande. C'est très simple!


Blini
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Inscription: 29 Nov 2004

Message le Mer Fév 23, 2005 9:20

Deux possiblités:

1. Tu as PHP5: fonction get_headers disponible

2. Tu n'as pas PHP 5:
Code: Tout sélectionner
function read_headers($url)
{
   $url_info = parse_url($url);
   $port = isset($url_info['port']) ? $url_info['port'] : 80;
   $fp = @fsockopen($url_info['host'], $port, $errno, $errstr, 30);
   if (!$fp)
      return false;// erreur fsockopen

   $head = 'HEAD '.@$url_info['path'];
   $head .= '?'.@$url_info['query'];
   $head .= " HTTP/1.0\r\nHost: ".@$url_info['host']."\r\n\r\n";
   fputs($fp, $head);
   while (!feof($fp))
   {
      if ($header = trim(fgets($fp, 1024)))
      {
         $key = array_shift(explode(':', $header));
         if($key == $header)
            $headers[] = $header;
         else
            $headers[$key] = substr($header, strlen($key) + 2);
         unset($key);
      }
   }

   if (isset($headers['Location']) && (substr($headers['Location'], -1) == '?'))
      $headers['Location'] = substr($headers['Location'], 0, -1);

   return $headers;
}



wullon
WRInaute accro
WRInaute accro
 
Messages: 3918
Inscription: 18 Sep 2004

Message le Jeu Fév 24, 2005 11:47

Merci beaucoup à tous (j'étais focalisé sur le GET ^^).


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités