[Catalyst] Force the session to be saved.
Andrew Rodland
andrew at cleverdomain.org
Tue Mar 29 18:33:03 GMT 2011
On Tuesday, March 29, 2011 12:46:32 PM Duncan Garland wrote:
> Hi,
>
> We've been having some peculiar behaviour from our system. I think it's
> because the controller which produces the HTML page stores data in the
> session for retrieval by the controller which produces the associated
> javascript file.
>
> The client begins processing the HTML page as soon as it starts to arrive.
> When it reaches the script tag it requests the javascript page.
> Occasionally the first controller hasn't written the session to the
> database when the javascript controller tries to retrieve it.
> (Catalyst::Plugin::Session::Store::DBIC).
>
> I can move the script tag down the page a bit, but what I really need is a
> way to force the session to be written before the HTML template is
> rendered.
>
> Something like:
>
> $c->session->{javascript}->{$template} = { one = 1, two => 2};
> $c->session->save;
>
> Is there such a method?
>
> Regards
>
> Duncan
finalize_session (which writes the session to the DB) runs before
finalize_body (which writes the response to the client), so Catalyst already
does what you would like it to, and forcing a session write before running the
view is unlikely to help anything. I suspect either your database isn't
guaranteeing ordering, or the problem is somewhere other than where you're
looking.
Andrew
More information about the Catalyst
mailing list