Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

savoir qu'une page web a ete modifie.

3 réponses
Avatar
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

3 réponses

Avatar
Olivier Miakinen
[ 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 <fr.comp.infosystemes.www.serveurs>.

Avatar
dwojylac.nospam
Etienne SOBOLE wrote:

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.

Avatar
Pascal COPPIN
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" a écrit dans le message de news:
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