> I think most people don't use Apache::Session::File in production.  It's 
> more of a testing thing.  In your situation, you would probably get 
> great performance from MLDBM::Sync with SDBM_File.  I'd suggest trying 
> that if you can't determine the cause of the Apache::Session::File issues.

Not to say that the other options won't work, but we're using
Apache::Session::File in production with no issues, handling in excess of
30 hits per second.  It works fine, and it's easy to keep old session
files cleaned up with a simple cron job that finds and deletes session
files older than some limit.

During development we also noticed race conditions with near-simultaneous
pageloads into framesets.  Try the 'Transaction' option when you tie to
the session - here is how that part of our mod_perl handler looks:

========================================
   # NOTE:
   #   At this point, $session_id is either set to some
   #   value from a cookie (for an existing session)
   #   or it is "undef"

   my %session = ();
   my $opts = {
                 Directory     => "$SESSIONFILEROOT/$site",
                 LockDirectory => "$SESSIONLOCKROOT/$site",
                 Transaction   => 1,
              };
   eval {
      tie %session, 'Apache::Session::File', $session_id, $opts;
   };
   if ( $@ ) {
      # Session tie failed for some reason.  If it was because
      # an existing session is invalid, create a new session:
      if ( $@ =~ /^Object does not exist in the data store/ ) {
         $session_id = undef;
         eval {
            tie %session, 'Apache::Session::File', $session_id, $opts;
         };
      }
      if ( $@ ) {
         # Totally failed to create the session - bail out:
         $r->log_error( "Tie failed: $@");
         return SERVER_ERROR;
      }
   }
========================================

HTH,
Larry Leszczynski
[EMAIL PROTECTED]

Reply via email to