PHP : récupérer les headers HTTP

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


wullon
WRInaute accro
WRInaute accro
 
Messages: 3914
Inscription: Sam Sep 18, 2004 15:06

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 passionné
WRInaute passionné
 
Messages: 613
Inscription: Ven Avr 18, 2003 0:19

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 impliqué
WRInaute impliqué
 
Messages: 477
Inscription: Ven Fév 27, 2004 16:36

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 passionné
WRInaute passionné
 
Messages: 506
Inscription: Lun Nov 29, 2004 8:59

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: 3914
Inscription: Sam Sep 18, 2004 15:06

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

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


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 Julien Coquet, expert certifié officiellement par Google Analytics.

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

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Website Optimizer

  • Analyse de l'entête HTTP
    Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
  • Tester le type de redirection
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).


Qui est en ligne

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