Just tried that.... <%perl> my %session; tie %session, 'Apache::Session::MySQL', undef, { Handle => $DBH, LockHandle => $DBH }; </%perl>
<h3>Setting some of the session keys<h3> <%perl> $session{'car'} = { make => 'BMW', year => '2005', model => 'M3', color => 'Interlagos Blue' }; $session{'user'} = $USEROBJECT; </%perl> <h3>Dumping contents of %session <% $session{_session_id} %></h3> % for my $key (keys %session) { <h3><% $key %> = <% $session{$key} %></h3> % } <h3><a href="dump.html?id=<% $session{_session_id} %>">dump.html</a></h3> # here's the added undef <------ % undef %session; But that also didn't work =( On 5/11/05, Bart Simpson <[EMAIL PROTECTED]> wrote: > > --- Rick <[EMAIL PROTECTED]> wrote: > > On 5/10/05, Bart Simpson <[EMAIL PROTECTED]> > > wrote: > > > > > > --- Rick <[EMAIL PROTECTED]> wrote: > > > > I'm having problems with > > > > MasonX::Request::WithApacheSession (using > > > > Apache::Session::MySQL backend). The session is > > not > > > > being updated, so > > > > I can't save any data to it. I verified this by > > > > looking at the mysql > > > > logs. > > > > > > Are you timestamping your session each time you > > > updated it? it only updates if you change > > someting in > > > top level of session hash, thus usually you > > timestamp > > > the session in top level when updating it. > > > > > > $session->{hash}->{key} = $new_val ; # won't cause > > > update > > > > > > $session->{hash} = { key => $new_val }; # causes > > > update cause hash address changed in top level. > > > > > > See docs Apache::Session docs for details about > > this. > > > Other than this I've never had this problem. Don't > > use > > > mason though. > > > > Interesting, it appears that the only API to the > > MasonX::Request::WithApacheSession is through the > > mason request object > > (global $m). In order to test what you have > > recommended, I created a > > session using purely the Apache::Session::MySQL > > class. I did this by > > creating a seperate "set.html" mason/html file which > > creates a new > > session and sets some session values. The code is > > below: > > > > -------------------BEGIN MASON CODE FOR > > > "set.html"------------------------------------------------- > > > > <%perl> > > my %session; > > tie %session, 'Apache::Session::MySQL', > > undef, { > > Handle => $DBH, > > LockHandle => $DBH > > }; > > </%perl> > > > > <h3>Setting some of the session keys<h3> > > <%perl> > > $session{'car'} = { > > make => 'BMW', > > year => '2005', > > model => 'M3', > > color => 'Interlagos Blue' > > }; > > > > $session{'user'} = $USEROBJECT; > > </%perl> > > > > <h3>Dumping contents of %session <% > > $session{_session_id} %></h3> > > % for my $key (keys %session) { > > <h3><% $key %> = <% $session{$key} %></h3> > > % } > > > > <h3><a href="dump.html?id=<% $session{_session_id} > > %>">dump.html</a></h3> > > > > -------------------END MASON CODE FOR > > > "set.html"------------------------------------------------- > > > > By viewing this page, the session key/values show up > > correctly in the > > HTML output. However, when I click the link to go to > > the dump.html > > page, nothing was saved. Below is the output for the > > dump.html page. > > > > -------------------BEGIN MASON CODE FOR > > > "dump.html"------------------------------------------------- > > <%args> > > $id > > </%args> > > <%perl> > > my %session; > > tie %session, 'Apache::Session::MySQL', $id, > > { > > Handle => $DBH, > > LockHandle => $DBH > > }; > > </%perl> > > > > <h3>DUMPING Session from %session</h3> > > % for my $key (sort keys %session) { > > <h3><% $key %> = <% $session{$key} %></h3> > > % } > > > > <h3><a href="set.html">set.html</a></h3> > > > > -------------------END MASON CODE FOR > > > "dump.html"------------------------------------------------- > > > > On this page, the only key/value pair is: > > _session_id => [MD5sessionidgoeshere] > > > > I checked the MySQL logs and there were only 3 calls > > to it: > > > > 2005 Query SELECT > > > GET_LOCK('Apache-Session-f050450049018ff9d77c9e4697700b5f', > > 3600) > > 2005 Query INSERT INTO sessions (id, > > a_session) VALUES > > ('f050450049018ff9d77c9e4697700b5f','\0\0\0\n > > f050450049018ff9d77c9e4697700b5f\0\0\0 > > _session_id') > > 2005 Query SELECT > > > RELEASE_LOCK('Apache-Session-f050450049018ff9d77c9e4697700b5f') > > > > No UPDATE statements even though I'm changing things > > in the top level hash. > > > > Any ideas? > > > > Apache::Session doc says it dies if it can't update > the session. Are you catching that die somewhere > without realizing it? Determine if update is > attempted and fails or not attempted at all. > > Try undefing the session (undef %session; # -- who > says perl is cryptic ? ) as soon as you are done with > it . "This will free up any locks associated with your > process" [docs] > > HTH > > Yahoo! Mail > Stay connected, organized, and protected. Take the tour: > http://tour.mail.yahoo.com/mailtour.html > >