Bug #68331 [Fbk->Opn]: Session custom storage callable functions not being called

From: Date: Thu, 06 Nov 2014 03:28:51 +0000
Subject: Bug #68331 [Fbk->Opn]: Session custom storage callable functions not being called
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-188477@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=68331&edit=1

 ID:                 68331
 Updated by:         yohgaki@php.net
 Reported by:        mark at grooveshark dot com
 Summary:            Session custom storage callable functions not being
                     called
-Status:             Feedback
+Status:             Open
 Type:               Bug
 Package:            Session related
 Operating System:   All
 PHP Version:        5.6.2
 Assigned To:        yohgaki
 Block user comment: N
 Private report:     N

 New Comment:

I found what's wrong. Since lazy write patch was in discussion and I left WIP patch in the repo
and left this patch merge to RM. This must be addressed ASAP.


Previous Comments:
------------------------------------------------------------------------
[2014-11-06 03:11:56] yohgaki@php.net

Hmm. The commit you're referring is nothing to do with you issue. It was reverted and new PR is
there for this. (It seems should be adjusted and committed)

https://github.com/yohgaki/php-src/compare/PHP-5.6-rfc-session-lock

It isn't merged yet. So lazy write patch is unrelated at all.

I've tried see if issue could be reproduced, but it cannot.
Could you write full/working reproducible script?

------------------------------------------------------------------------
[2014-11-05 22:25:52] yohgaki@php.net

Since your are using user save handler, I think this could be fixed as a bug. I have to check the
code to be sure, though.

------------------------------------------------------------------------
[2014-11-05 21:39:36] mark at grooveshark dot com

> I don't understand the reason why you need "write" even when session data was
> not changed at all.

Two reasons I brought up on the internals thread:
- We would like to update the timestamp of the session.
- We have some data that isn't in $_SESSION that needs to be written. We don't use
$_SESSION because we need the data to be indexable (not serialized) and didn't want to
duplicate the data in two places.

> BTW, I was suggesting "update" handler for the RFC introduce this feature, but there
> were objection and withdrawned.

I'm unaware of the full objection to that idea; however, I think calling the write() custom
handlers until an alternative is implemented would suffice to fix this issue. I understand that
doing the lazy write call was an optimization for normal sessions but this change can break some
custom session implementations.

> I may try to add user space "update" again.

Based on what was said on the internals thread it sounds like this isn't an option for PHP 5.6.
I assume you mean something can be done for 5.7 and for PHP 5.6 the commit will just have to be
reverted?

------------------------------------------------------------------------
[2014-11-05 21:20:16] yohgaki@php.net

I don't understand the reason why you need "write" even when session data was not
changed at all.

BTW, I was suggesting "update" handler for the RFC introduce this feature, but there were
objection and withdrawned.

I may try to add user space "update" again.

------------------------------------------------------------------------
[2014-11-04 22:35:27] james at grooveshark dot com

> The RFC reintroduces the idea of lazy writing as an optional feature   > so when that is in
> then you'll be able to (not) use it.
That's not a problem. Its fine for it to be optional but in 5.6 its NOT optional and
there's no way to turn off lazy writing. The RFC said there would be, but there's not.

> With that said, the RFC (well, the code in its PR) does introduce a    > supplemental
> interface "SessionUpdateTimestampHandler" which adds a    > method
> "updateTimestamp" that would be called during lazy writing     > instead of write(). 
That's also fine, but was not implemented. As the RFC was implemented, there is no way to turn
off the lazy write functionality.

If there was ANY way to turn off this functionality (besides rebuilding PHP without the mentioned
comment, which is what GS is doing now), then this wouldn't be an issue at all. Because of
that, I'd consider this to be a bug. The RFC was fine in that it introduced multiple
workarounds but that was not implemented, which is why it is breaking applications.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=68331


--
Edit this bug report at https://bugs.php.net/bug.php?id=68331&edit=1


Thread (14 messages)

« previous php.bugs (#188477) next »