从PHP官方手册:session_register_shutdown实际上做了什么?
session_register_shutdown
- 会议关机功能寄存器
session_write_close()
的关断功能。
那么,会话关机是什么意思? session_write_close
和这个有什么区别?
要说清楚,这个函数实际上做了什么?我们什么时候使用它?
似乎很少有人在网上使用和讨论这个功能。
从PHP官方手册:session_register_shutdown实际上做了什么?
session_register_shutdown
- 会议关机功能寄存器
session_write_close()
的关断功能。
那么,会话关机是什么意思? session_write_close
和这个有什么区别?
要说清楚,这个函数实际上做了什么?我们什么时候使用它?
似乎很少有人在网上使用和讨论这个功能。
该功能实际上很少使用,但在互联网上几乎没有任何的讨论,我终于找到了从源代码注释的答案:
/* This function is registered itself as a shutdown function by
* session_set_save_handler($obj). The reason we now register another
* shutdown function is in case the user registered their own shutdown
* function after calling session_set_save_handler(), which expects
* the session still to be available.
来源:https://github.com/php/php-src/blob/master/ext/session/session.c
而且,很明显,相比到官方手册,这清楚地说明了它到底做了什么。
这个问题看起来很愚蠢。
谢谢,这帮了我很多!这应该在在线文档中! – oucil
这是一个公平的问题。我也被文档弄糊涂了。
我能读它了十几次后提取什么是函数仅仅是代码的快捷版本
register_shutdown_function('session_write_close');
如果你调用一个PHP脚本模具()或退出会话将不会正确关闭(特别是如果您有自定义会话处理程序)。这个功能无非是一个捷径。我的具体的会话处理器
我的引导代码如下所示:
// Set the session handlers to the custom functions.
$handler = new SQLSrvSessionHandler();
session_set_save_handler(
array($handler, 'sessionOpen'),
array($handler, 'sessionClose'),
array($handler, 'sessionRead'),
array($handler, 'sessionWrite'),
array($handler, 'sessionDestroy'),
array($handler, 'sessionGC')
);
session_register_shutdown();
功能session_register_shutdown
确保我的功能SQLSrvSessionHandler::sessionClose
和SQLSrvSessionHandler::sessionWrite
被称为就算我跑的模具或退出声明。
我还发现this answer有帮助。
你读过网页的其余部分了吗? “将session_write_close()注册为关闭功能。”用户评论给出了旧的PHP版本的等价物,这也使得它非常清楚它的功能。 – IMSoP
我投票结束这个问题作为题外话,因为这个问题可以通过阅读文档在http://php.net/session_register_shutdown – Sven
回答当然我读了,但我仍然不明白。 “将session_write_close()注册为关闭功能。”何时以及为什么我们可以使用这个功能? –