Putting code in a dispatchLoopShutdown would not help at all, the script exit/die in the redirectAndExit function.
So the only way to have some bits to be executed is the register_shutdown_function.
About session_write_close, this call is here to prevent a bug regarding session persistence when redirecting. In some cases, when doing a redirect the session variables may not be saved, and this method helps a lot with loosing data in session.
Regarding your problem, I think that adding an option to handle the case when the session_close should not happen could be a good solution. The default behavior would remain the same, that is calling the session_close.
Sébastien Crocquesel
2009/2/18 Christer Edvartsen <cogo@starzinger.net>
As specified in the blog post I'm not interested in using Zend_Session.
This post was more about why the Redirector helper actually kills the
session, and if people thinks this is good practice. :)
On Tue, 17 Feb 2009 16:55:01 -0800, Hector Virgen <djvirgen@gmail.com>
--wrote:
> Also, if you're using flash messages, why not use the flash messenger
> controller helper provided by Zend? It already handles all of the session
> stuff for you.
>
> Just be sure to write your message to the flash messenger before
> redirecting:
>
> public function addAction()
> {
> // add code
> $this->_helper->flashMessenger('Your post has been added.');
> $this->_helper->redirector(/.../);
> }
>
> I hope this helps :)
>
> -Hector
>
>
> On Tue, Feb 17, 2009 at 4:51 PM, Hector Virgen <djvirgen@gmail.com>
wrote:
>
>> Maybe it would help to place your "shutdown" code in a front controller
>> plugin inside dispatchLoopShutdown(). Otherwise your code might be
> running
>> too late.
>>
>> -Hector
>>
>>
>>
>> On Tue, Feb 17, 2009 at 2:11 PM, Christer Edvartsen
> <cogo@starzinger.net>wrote:
>>
>>> Today I noticed that Zend_Controller_Action_Helper_Redirector kills the
>>> current session in the redirectAndExit() method, wether you use
> Zend_Session
>>> or not. Why does it do that?
>>>
>>> I happened to try to do some session related stuff in a shutdown
> function
>>> but it failed because I had redirected the client using the Redirector
>>> helper and the session was no longer available in my shutdown function.
> I
>>> extended the redirector to skip the call to session_write_close() but I
>>> can't say I think it's correct behavior that an action helper closes
> the
>>> current session just like that.
>>>
>>> I wrote a post about my solution over at my blog:
>>>
>>>
>
http://cogo.wordpress.com/2009/02/17/zend_controller_action_helper_redirector-wants-to-kill-my-session/
>>>
>>> I think it should be an option for the Redirector to close the session,
>>> and it should be disabled by default. If more people agrees I can write
> a
>>> patch and submit it.
>>>
>>> Thanks.
>>>
>>> --
>>> Christer Edvartsen
>>> cogo@starzinger.net
>>> http://cogo.wordpress.com/
>>>
>>>
>>
Christer Edvartsen
http://cogo.wordpress.com/
没有评论:
发表评论