Discussion:
savoir qu'une page web a ete modifie.
(trop ancien pour répondre)
Etienne SOBOLE
2007-04-03 13:42:09 UTC
Permalink
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
Olivier Miakinen
2007-04-03 14:37:06 UTC
Permalink
[ publication croisée, suivi vers fciws ]
Post by Etienne SOBOLE
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).
Post by Etienne SOBOLE
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>.
Dominique
2007-04-03 21:12:04 UTC
Permalink
Post by 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'."\r\n".
'Host: '.$host."\r\n".
'Connection: Close'."\r\n\r\n";

$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
2007-04-03 22:36:03 UTC
Permalink
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
Post by 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
Continuer la lecture sur narkive:
Loading...