How should I implement lazy session creation in PHP?
Posted
by Adam Franco
on Stack Overflow
See other posts from Stack Overflow
or by Adam Franco
Published on 2010-06-08T14:22:40Z
Indexed on
2010/06/08
15:22 UTC
Read the original article
Hit count: 367
By default, PHP's session handling mechanisms set a session cookie header and store a session even if there is no data in the session. If no data is set in the session then I don't want a Set-Cookie
header sent to the client in the response and I don't want an empty session record stored on the server. If data is added to $_SESSION
, then the normal behavior should continue.
My goal is to implement lazy session creation behavior of the sort that Drupal 7 and Pressflow where no session is stored (or session cookie header sent) unless data is added to the $_SESSION
array during application execution. The point of this behavior is to allow reverse proxies such as Varnish to cache and serve anonymous traffic while letting authenticated requests pass through to Apache/PHP. Varnish (or another proxy-server) is configured to pass through any requests without cookies, assuming correctly that if a cookie exists then the request is for a particular client.
I have ported the session handling code from Pressflow that uses session_set_save_handler()
and overrides the implementation of session_write()
to check for data in the $_SESSION
array before saving and will write this up as library and add an answer here if this is the best/only route to take.
My Question: While I can implement a fully custom session_set_save_handler()
system, is there an easier way to get this lazy session creation behavior in a relatively generic way that would be transparent to most applications?
© Stack Overflow or respective owner