Hi I've tried to use Apache::SharedMem to share memory between
subsequent requests' handlers, but I got this error messages:
***********
[Thu Jul 5 16:46:53 2001] [error] Apache::SharedMem object
initialization: Unable to initialize root ipc shared memory segment:
File exists at /usr/lib/perl5/site_perl/5.005/Apache/SharedMem.pm line
690
Apache::SharedMem::_init_root('Apache::SharedMem=HASH(0x85b8794)')
called at /usr/lib/perl5/site_perl/5.005/Apache/SharedMem.pm line 707
Apache::SharedMem::_init_namespace('Apache::SharedMem=HASH(0x85b8794)')
called at /usr/lib/perl5/site_perl/5.005/Apache/SharedMem.pm line 142
Apache::SharedMem::new('Apache::SharedMem') called at
/usr/local/apache.max//Apache/O4AuthTool.pm line 65
Apache::O4AuthTool::setGVar('Apache::O4AuthTool=HASH(0x85499d8)',
'PIPPO', '/') called at
/usr/local/apache.max//Apache/O4AuthletHandler.pm line 39
Apache::O4AuthletHandler::handler('Apache=SCALAR(0x85b86ec)')
called at /dev/null line 0
eval {...} called at /dev/null line 0
*************
What does it mean "File Exists" ?? Which file ???
The source code is :
*****************
sub getGVar {
my($self,$varname) = @_;
# my $share = new Apache::SharedMem(debug=>0, ipc_mode => '0777');
my $share = new Apache::SharedMem();
# ...in another process
my $var;
# die("can't get key: ", $self->error) unless($share->status eq
SUCCESS);
# $share->delete(key);
# $share->clear if($share->size > $max_size);
my $lock_timeout = 40; # seconds
if($share->lock(LOCK_EX, $lock_timeout))
{
# $var = $share->get($varname, WAIT, 40);
$var = $share->get("PIPPO", NOWAIT);
my $st = $share->status;
logga($self,"status = $st");
if(!($share->status eq SUCCESS)){
my $err= $share->error;
logga($self,"FALLITA LA getGVar ($err)");
$share->unlock;
$share->release;
return undef;
}
}else {
logga($self,"fallita la lock...");
}
$share->unlock;
$share->release;
return $var;
}
sub setGVar {
my($self,$varname, $varval) = @_;
# my $share = new Apache::SharedMem( rootname => 'STRONZO', namespace
=> 'PD', debug=>1, ipc_mode => '0777');
my $share = new Apache::SharedMem();
my $ret = 0;
# $share->set(key=>'some data');
# ...in another process
# my $var = $share->get(key, NOWAIT);
# die("can't get key: ", $self->error) unless($share->status eq
SUCCESS);
# $share->delete(key);
# $share->clear if($share->size > $max_size);
my $lock_timeout = 40; # seconds
if($share->lock(LOCK_EX, $lock_timeout))
{
# $share->set($varname => $varval);
$share->set("PUPPO" => $varval);
if($share->status eq FAILURE){
my $err= $share->error;
logga($self,"FALLITA LA setGVar $err");
}
if($share->status eq SUCCESS){
my $err= $share->error;
logga($self,"SUCCESSO LA setGVar $err");
$ret = 1;
}
$share->unlock;
}
$share->release;
return $ret;
}
*****************
I get errors when I call setGVar().
Could someone help me?
Many Thanks,
Alberto
--
Alberto Canzi
OpenFor s.r.l.
e-mail: [EMAIL PROTECTED]