Lecture de date aléatoire. - Perl - Programmation
Marsh Posté le 23-08-2006 à 09:50:48
Joseph75 a écrit : Mais au lieu de donner l'heure en cours, il me renvoie une heure d'une page précédente. |
Peux-tu être plus précis ?
Marsh Posté le 23-08-2006 à 11:31:54
Elmoricq a écrit : Peux-tu être plus précis ? |
En fait il a l'heure du chargement du module...
Marsh Posté le 23-08-2006 à 14:08:56
Danjer a écrit : En fait il a l'heure du chargement du module... |
C'est normal : tu évalues la fonction localtime une seule fois au chargement du module. Lors de tes appels ultérieurs aux fonctions HrLocale et DtLocale, tu ne fais que retourner l'heure/la date qui a été calculée au chargement.
Tu devrais encapsuler les lignes 21 à 36 dans une fonction qui serait appelée au début de HrLocale et de DtLocale pour récupérer la "vraie" heure/date courante.
Marsh Posté le 23-08-2006 à 15:35:15
Bonjour et merci pour vos réponses.
francesco, tu sous-tendrais qu'il faudrait que j'inclus
Code :
|
dans la boucle
DEBUT:
goto DEBUT;
ou dans toute autre pour que la valeur soit re-calculée à chaque passage sur
use DateEdition ? Sinon, dans l'immédait, je ne vois pas comment faire.
Pour répondre aux deux autres questions, l'appel au module - DateEdition - est
inclus dans un script cgi-Perl du serveur Apache et il n'est << appelé >> que
lorsque l'on clique sur le lien mis sur ladite page.
Pour exemple <a href="/cgi-bin/AfficheDateHTML.pl">Affiche la date et l'heure</a>
Le recalcul ne se fait-il pas systématiquement lors de l'appel du script ?
Merci de vos réponses.
Marsh Posté le 23-08-2006 à 15:42:34
De fait je n'avais pas fait attention que c'était un module que tu appelais.
Comme le dit franceso, la ligne :
($secondes,$minutes,$heure,$jmois,$mois,$annee1900,$jsemaine,$jannee,$hsaison)=localtime(time); |
Il faut la déplacer/copier dans les fonctions DtLocale et HrLocale, autrement les variables sont initialisées une bonne fois pour toute au chargement du module, et jamais rafraîchies.
Marsh Posté le 23-08-2006 à 16:03:52
Elmoricq a écrit : ... les variables sont initialisées une bonne fois pour toute au chargement du module, et jamais rafraîchies. |
Ou dans le cas de ton CGI quand :
- apache est redemarre
- si le fichier de ton module change (je me souviens plus... je crois)
Marsh Posté le 23-08-2006 à 16:07:35
Joseph75 a écrit : francesco, tu sous-tendrais qu'il faudrait que j'inclus [...] dans la boucle |
Non, il faut que tu règles le problème dans ton module lui-même, pas dans le script qui y fait appel.
Dans le code de ton module, il faut que modifies les fonctions DtLocale et HrLocale pour qu'elles appellent elles-mêmes la fonction localtime(). Tes scripts incluant le module ne doivent pas être modifiés.
Marsh Posté le 23-08-2006 à 16:11:10
Merci,
c'est justement ce que je viens de faire et voici le code :
Code :
|
Si çà peut servir à quelqu'un ...
Merci à vous tous.
Marsh Posté le 22-08-2006 à 23:56:00
Bonsoir à tous.
Avant tout, et sans vouloir user de flatterie, bravo pour la qualité de vos réponses aux questions posées.
J'ai une question à poser qui, il me semble, n'a pas été traitée sur le forum et me pose problème.
J'ai créé un script Perl sous forme de modulle qui est sensé me donner la date et l'heure de mon serveur Apache.
Mais au lieu de donner l'heure en cours, il me renvoie une heure d'une page précédente.
Mais pour comprendre voici les fichiers :
** Module Perl **
**************
** Affichage Date et Heure sur la console **
**********************************
** Affichage Date et Heure dans document HTML **
***************************************
Voilà les 3 fichiers.
Si quelqu'un a une idée ou des idées, alors je suis preneur car je sèche depuis quelques (10) jours.
Le phénomène est aussi visible si on modifie le code avec la version entourée par les goto.
Merci d'avance à vous tous et encore bravo.
Message édité par Joseph75 le 23-08-2006 à 00:21:32