savoir qu'une page web a ete modifie.

Le
Etienne SOBOLE
salut je dois indexer des sites.
pour faire ca je les aspire !

y a t-il un moyen que je sache la date de modification de la page avant de
faire un fopen dessus?
je doute que ce type de commande existe mais bon !!! sait on jamais !

merci
Etienne
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #67817
[ publication croisée, suivi vers fciws ]


salut je dois indexer des sites.
pour faire ca je les aspire !


Donc des requêtes HTTP GET (je suppose que tu ne fais pas de POST).

y a t-il un moyen que je sache la date de modification de la page avant de
faire un fopen dessus?


Si de la date peut dépendre le fait que tu les récupères ou non, tu peux
commencer par faire une requête HTTP HEAD. Sinon, profite du HTTP GET
pour récupérer d'éventuelles infos dans les entêtes HTTP de la réponse.
Je ne sais pas en revanche si tu peux récupérer ces infos avec la
commande fopen() de PHP.

L'un des entêtes intéressant (s'il existe) est "Last-Modified". Pour
savoir s'il y en a d'autres, je fais suivre là où c'est plus en charte,
c'est-à-dire
dwojylac.nospam
Le #67816
Etienne SOBOLE
y a t-il un moyen que je sache la date de modification de la page avant de
faire un fopen dessus?
je doute que ce type de commande existe mais bon !!! sait on jamais !


Oui il y a moyen :
c'est avec la commande fsockopen et fwrite ou avec la biliothèque curl

http://fr.php.net/manual/fr/function.fsockopen.php

$url_array = parse_url($url);
$host = $url_array['host'];
$path = $url_array['path'];

$fp = @fsockopen($host, 80);
if ($fp) {

$out = 'HEAD '.$path.' HTTP/1.1'."rn".
'Host: '.$host."rn".
'Connection: Close'."rnrn";

$lines = '';
fwrite($fp, $out);
while (!feof($fp)) {
$lines .= fgets($fp, 1024);
}
fclose($fp);
} // fin if $fp

echo $lines;

et dans les données récupérées il y a normalement la donnée Etag et la
donnée LastModified que l'on peut filtrer avec une expression régulière.

Cela se fait très bien aussi avec la bibliothèque curl.
http://fr.php.net/manual/fr/ref.curl.php

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$lines = curl_exec ($ch);
curl_close ($ch);

echo $lines;


Mais certains hébergeurs désactivent ces fonctions.

--
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.

Pascal COPPIN
Le #67813
Pourquoi n'utiliserais tu pas wget?
Je suppose que tu veux une copie mirroir locale tout en ne recopiant que les
nouvelles pages, si je devinne bien le pourquoi de ta question.
Cdt
Pascal

Extraits du man :

--mirror
Turn on options suitable for mirroring. This option turns on
recursion and time-stamping, sets infinite recursion depth and
keeps FTP directory listings. It is currently equivalent
to -r -N
-l inf --no-remove-listing.


Very Advanced Usage

· If you wish Wget to keep a mirror of a page (or FTP subdirecto-
ries), use --mirror (-m), which is the shorthand for -r -l
inf -N.
You can put Wget in the crontab file asking it to recheck a site
each Sunday:

crontab
0 0 * * 0 wget --mirror http://www.gnu.org/ -o
/home/me/weeklog


"Etienne SOBOLE" 46124ab4$0$5881$
salut je dois indexer des sites.
pour faire ca je les aspire !

y a t-il un moyen que je sache la date de modification de la page avant de
faire un fopen dessus?
je doute que ce type de commande existe mais bon !!! sait on jamais !

merci
Etienne


Publicité
Poster une réponse
Anonyme