Bonjour a tous,
Je debute en perl. J'ai du code qui ne fais pas correctement son travail (code Apache). En effet, il doit purger les vieilles sessions sur notre serveur or cela ne fonctionne pas et pour cause:
J'ai un table (@t) d'identifiant (id=nom du fichier de session sur le serveur):
fJusque la tout va bien, puis la fonction remove() du package 'Apache::Session::Store::File' est appelée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 or my $id (@t) { my %h; eval { tie %h, 'Apache::Session::File', $id, $conf->{globalStorageOptions} }; if ($@) { next; } tied(%h)->delete; }
C'est ici que le bas blesse, il essaie de supprimer un fichier qui n'existe pas. Il va recuperer la variable '_session_id' or elle ne correspond pas au nom du fichier ($id)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 sub remove { my $self = shift; my $session = shift; my $directory = $session->{args}->{Directory} || $Apache::Session::Store::File::Directory; if ($self->{opened}) { CORE::close $self->{fh}; $self->{opened} = 0; } my $file = $directory.'/'.$session->{data}->{_session_id}; print "File = $file\n"; if (-e $file) { unlink ($file) || die "Could not remove file $file: $!"; } else { die "Object does not exist in the data store"; } }
Comment puis-je recuper ma variable $id dans le remove()? Est-ce seulement possible :S ?
Merci de votre aide !
e.
Partager