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]

Reply via email to