IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Détecter la mise à jour d'un flux RSS


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut [Dates] Détecter la mise à jour d'un flux RSS
    Bonjour,
    Est-il possible de détecter si un flux RSS distant a été mis à jour ?

  2. #2
    Fabouney
    Invité(e)
    Par défaut
    Salut,

    Voilà un exemple complet qui pourra certainement t'aider, à modifier si tu le souhaite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    function stream_last_modified($url)
    {
       if (function_exists('version_compare') && version_compare(phpversion(), '4.3.0') > 0)
       {
          if (!($fp = @fopen($url, 'r')))
             return NULL;
     
          $meta = stream_get_meta_data($fp);
          for ($j = 0; isset($meta['wrapper_data'][$j]); $j++)
          {
             if (strstr(strtolower($meta['wrapper_data'][$j]), 'last-modified'))
             {
                $modtime = substr($meta['wrapper_data'][$j], 15);
                break;
             }
          }
          fclose($fp);
       }
       else
       {
          $parts = parse_url($url);
          $host  = $parts['host'];
          $path  = $parts['path'];
     
          if (!($fp = @fsockopen($host, 80)))
             return NULL;
     
          $req = "HEAD $path HTTP/1.0\r\nUser-Agent: PHP/".phpversion()."\r\nHost: $host:80\r\nAccept: */*\r\n\r\n";
          fputs($fp, $req);
     
          while (!feof($fp))
          {
             $str = fgets($fp, 4096);
             if (strstr(strtolower($str), 'last-modified'))
             {
                $modtime = substr($str, 15);
                break;
             }
          }
          fclose($fp);
      }
       return isset($modtime) ? strtotime($modtime) : time();
    }
     
    $last_modified = stream_last_modified('http://www.animeka.com/rss/actuasite.html');
    if (!is_null($last_modified))
       if ($last_modified < time()-3600) //Older than an hour
          echo 'URL is older than an hour.';
       else
          echo 'URL is fairly new.';
    else
       echo 'Invalid URL!';
    ?>
    Cordialement.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 201
    Points : 143
    Points
    143
    Par défaut
    Merci, je vais tester çà.

    Par contre, ça semble plutôt retourner la date de dernier accès que la date de modification.

  4. #4
    Fabouney
    Invité(e)
    Par défaut
    Oui, bah comme dans l'exemple que je t'es donné, ta plus qu'a faire un test avec la date du jours.
    tu n'as qu'a fixer un temps pour dire qu'un flux doit être considéré comme mise à jours.
    Car faire ça en temps réel ça me semble un peu plus difficile.

    Après peut-être que je ne répond pas totalement à ta question...

    Cordialement.

Discussions similaires

  1. problème mise à jour appli à partir flux RSS
    Par fludbis dans le forum Mobiles
    Réponses: 0
    Dernier message: 08/01/2014, 22h19
  2. Réponses: 14
    Dernier message: 04/01/2007, 22h35
  3. recuperation de la date d'une mise à jour d'une table
    Par freestyler1982 dans le forum Oracle
    Réponses: 4
    Dernier message: 09/09/2006, 15h42
  4. Réponses: 1
    Dernier message: 25/11/2005, 11h43
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo