<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1562488:1622292 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
+<!-- English Revision : 1622705 -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
</section>
-<section id="autorefresh">
-
- <title>Actualisation automatique d'un document</title>
-
- <!--
-+I'm trying to decide whether this example is worthwhile to keep, and, if
-+so, whether it needs to be updated/rewritten. Certainly the description
-+needs to be rewritten. I'm not sure we really need to be recommending
-+nph-refresh techniques.
-+-->
-
- <dl>
- <dt>Description :</dt>
-
- <dd>
- <p>Lorsque nous créons une page web complexe, ne serait-il pas
- souhaitable que le navigateur web actualise automatiquement la
- page chaque fois que nous en sauvegardons une nouvelle version
- à partir de notre éditeur ? Impossible ?</p>
- </dd>
-
- <dt>Solution :</dt>
-
- <dd>
- <p>Non ! Nous allons pour cela combiner la fonctionnalité MIME
- multipart, la fonctionnalité NPH du serveur web et la
- puissance de <module>mod_rewrite</module> pour la manipulation
- d'URLs. Tout d'abord, nous définissons une nouvelle
- fonctionnalité pour les URLs : l'ajout de
- <code>:refresh</code> à toute URL fait que la 'page' est
- actualisée chaque fois que la ressource est mise à jour dans
- le système de fichiers.</p>
-
-<highlight language="config">
-RewriteRule ^(/[uge]/[^/]+/?.*):refresh /interne/cgi/apache/nph-refresh?f=$
-</highlight>
-
- <p>Nous appelons maintenant cette URL</p>
-
-<example>
-/u/foo/bar/page.html:refresh
-</example>
-
- <p>ce qui entraîne en interne l'invocation de l'URL</p>
-
-<example>
-/interne/cgi/apache/nph-refresh?f=/u/foo/bar/page.html
-</example>
-
- <p>Il ne reste plus qu'à écrire le script NPH-CGI. Bien que l'on
- écrive habituellement dans ces cas "laissé à la charge du
- lecteur à titre d'exercice", ;-) je vous l'offre, aussi.</p>
-
-<highlight language="perl">
-#!/sw/bin/perl
-##
-## nph-refresh -- script NPH/CGI pour l'actualisation automatique de
-## pages
-## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
-##
-$| = 1;
-
-# éclate la variable QUERY_STRING
-@pairs = split( /&/, $ENV{'QUERY_STRING'} );
-foreach $pair (@pairs) {
- ( $name, $value ) = split( /=/, $pair );
- $name =~ tr/A-Z/a-z/;
- $name = 'QS_' . $name;
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
- eval "\$$name = \"$value\"";
-}
-$QS_s = 1 if ( $QS_s eq '' );
-$QS_n = 3600 if ( $QS_n eq '' );
-if ( $QS_f eq '' ) {
- print "HTTP/1.0 200 OK\n";
- print "Content-type: text/html\n\n";
- print "<b>ERROR</b>: No file given\n";
- exit(0);
-}
-if ( !-f $QS_f ) {
- print "HTTP/1.0 200 OK\n";
- print "Content-type: text/html\n\n";
- print "<b>ERROR</b>: File $QS_f not found\n";
- exit(0);
-}
-
-sub print_http_headers_multipart_begin {
- print "HTTP/1.0 200 OK\n";
- $bound = "ThisRandomString12345";
- print "Content-type: multipart/x-mixed-replace;boundary=$bound\n";
- &print_http_headers_multipart_next;
-}
-
-sub print_http_headers_multipart_next {
- print "\n--$bound\n";
-}
-
-sub print_http_headers_multipart_end {
- print "\n--$bound--\n";
-}
-
-sub displayhtml {
- local ($buffer) = @_;
- $len = length($buffer);
- print "Content-type: text/html\n";
- print "Content-length: $len\n\n";
- print $buffer;
-}
-
-sub readfile {
- local ($file) = @_;
- local ( *FP, $size, $buffer, $bytes );
- ( $x, $x, $x, $x, $x, $x, $x, $size ) = stat($file);
- $size = sprintf( "%d", $size );
- open( FP, "<$file" );
- $bytes = sysread( FP, $buffer, $size );
- close(FP);
- return $buffer;
-}
-
-$buffer = &readfile($QS_f);
-&print_http_headers_multipart_begin;
-&displayhtml($buffer);
-
-sub mystat {
- local ($file) = $_[0];
- local ($time);
-
- ( $x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime ) = stat($file);
- return $mtime;
-}
-
-$mtimeL = &mystat($QS_f);
-$mtime = $mtime;
-for ( $n = 0 ; $n & lt ; $QS_n ; $n++ ) {
- while (1) {
- $mtime = &mystat($QS_f);
- if ( $mtime ne $mtimeL ) {
- $mtimeL = $mtime;
- sleep(2);
- $buffer = &readfile($QS_f);
- &print_http_headers_multipart_next;
- &displayhtml($buffer);
- sleep(5);
- $mtimeL = &mystat($QS_f);
- last;
- }
- sleep($QS_s);
- }
-}
-
-&print_http_headers_multipart_end;
-
-exit(0);
-
-##EOF##
-</highlight>
- </dd>
- </dl>
-
-</section>
-
<section id="structuredhomedirs">
<title>Répertoires Home structurés</title>
la fenêtre de temps configurée. On peut utiliser
<module>mod_expires</module> pour contourner ce problème. Il est
cependant bien plus commode de servir un contenu dynamique, et
- de le personnaliser en fonction de l'heure du jour.</note>
- </dd>
+ de le personnaliser en fonction de l'heure du jour.</note> </dd>
</dl>
</section>