Php 未调用SessionHandlerInterface写入方法
因此,我创建了一个实现SessionhandlerInterface的类,并将其设置为会话处理程序:Php 未调用SessionHandlerInterface写入方法,php,Php,因此,我创建了一个实现SessionhandlerInterface的类,并将其设置为会话处理程序: $sessionHandler = new SessionHandler(); session_set_save_handler($sessionHandler); session_start(); 问题是,从未调用write函数 如果我使用session\u set\u save\u handler的第二个参数并将其设置为false: session_set_save_handler($se
$sessionHandler = new SessionHandler();
session_set_save_handler($sessionHandler);
session_start();
问题是,从未调用write函数
如果我使用session\u set\u save\u handler的第二个参数并将其设置为false:
session_set_save_handler($sessionHandler, false);
然后它就正常工作了。有人能给我解释一下这种行为吗?我使用的是PHP5.4.6
文件中写有:
当使用对象作为会话保存处理程序时,向PHP注册shutdown函数非常重要,以避免PHP在关闭时内部销毁对象的方式产生意外的副作用,并可能阻止调用write和close。通常,您应该使用register\u shutdown\u function()函数注册“会话写入关闭”
从PHP5.4.0开始,在使用OOP方法调用session_set_save_handler()并传递实现SessionHandlerInterface的实例时,可以使用session_register_shutdown()或只使用“register shutdown”标志
但我并不完全理解这一点。声明如下:
“写入”处理程序只有在输出流结束后才会执行
关闭因此,“write”处理程序中调试语句的输出
将永远不会在浏览器中看到。如果需要调试输出,
建议将调试输出写入文件
这可能就是为什么如果您使用一个简单的
echo
SessionHandler的实现是什么?当您调用session\u write\u close()
时如何?感谢您在session\u set\u save\u handler
的文档中引用这一行。在write
的文档中,没有提到这一点。。。