Re: [RFC][Discussion] Add session_gc()
| From: | Andrey Andreev | Date: | Thu, 07 Apr 2016 15:12:28 +0000 |
| Subject: | Re: [RFC][Discussion] Add session_gc() | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-92130@lists.php.net to get a copy of this message | ||
Hi,
On Thu, Apr 7, 2016 at 9:05 AM, Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:
> Hi all,
>
> This is very old RFC that adds session_gc().
> https://wiki.php.net/rfc/session-gc
>
> It simply adds missing session_gc() function.
> Comments are appreciated.
>
>
There are a few question marks raised by the RFC's (lack of) content ...
1. How exactly does the function work?
I can see that in the patch, but it should be explained in the RFC too ..
even the function signature is missing.
2. What happens if SessionHandler::gc() was triggered by the probability
mechanism, but you then call session_gc() manually?
It seems odd that you've put "Document calling session_gc() periodically is
the best practice" in the RFC itself, but are not addressing this issue.
IMO, it is more important to document this and here's an idea: trigger at
least an E_NOTICE in that case.
Speaking of the documentation part - it's not hard to imagine A LOT of
people doing this:
session_start();
session_gc();
That's not a small problem.
3. If session_gc() bypasses the gc_probability, gc_divisor INI settings*,
then why does it still rely on gc_maxlifetime?
The signature for SessionHandlerInterface::gc() accepts a TTL value as a
parameter; session_gc() can too:
function session_gc($ttl = ini_get('session.gc_maxlifetime')) {}
* Note: The current patch doesn't actually ignore gc_probability, but I
think that's by mistake (also relevant to my previous point). I'll comment
on the PR on GitHub.
Cheers,
Andrey.