session_set_save_handler()函数注意细节

原创 2016年08月30日 17:33:37

session_set_save_handler  设置用户自定义会话存储函数

例如:

如果想使用 PHP 内置的会话存储机制之外的方式, 可以使用本函数。

例如,可以自定义会话存储函数来将会话数据存储到数据库。两种使用方式:

1.PHP5.4之前

bool session_set_save_handler ( callable $open , callable $close , callable $read , 

callable $write , callable $destroycallable $gc [, callable $create_sid ] ) 2.PHP5.4之后

bool session_set_save_handler ( SessionHandlerInterface $sessionhandler [, bool $register_shutdown = true ] )

详情,可查看PHP手册:

http://php.net/manual/zh/function.session-set-save-handler.php

还是摘自手册中的内容:

$handler = new FileSessionHandler(); // 我们自定义了一个session处理类,包含必须的几个方法
session_set_save_handler(
     array(
$handler'open'),
     array(
$handler'close'),
     array(
$handler'read'),
     array(
$handler'write'),
     array(
$handler'destroy'),
     array(
$handler'gc')
    );

// 下面这行代码可以防止使用对象作为会话保存管理器时可能引发的非预期行为
register_shutdown_function('session_write_close');

session_start();
// 现在可以使用 $_SESSION 保存以及获取数据了

这里主要是想说:

使用session_set_save_handler(),得记得使用 'register_shutdown_function',手册中是这样解释的:

在脚本执行完毕之后,PHP 内部会清除对象, 所以有可能不调用 write 和 close 回调函数。 这样可能会引发非预期

的行为,所以当使用对象作为会话保存管理器时, 需要通过注册 shutdown 回调函数来规避风险。 通常,你可以通过

调用 register_shutdown_function() 函数 来注册 'session_write_close' 回调函数。


接下来提到的非常关键的一点,是项目中真实出现的,而这个问题,我是真不知道,因为自定义的session机制,我没写过,都是进公司就是直接使用别人写好的,二次开发产品,肯定也是,所以,调试的过程中,很多应用问题,确实根本就没碰到过:

使用了自定义的session机制,php.ini 中的session.auto_start,必须设置为false。否则自定义的session机制失效,仍旧采用系统的!


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

cookie 和session 的区别

cookie 和session 的区别: 1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOK...

centos5.2用memcache 来作PHP 的session.save_handler

最近我的网站访问在直线上升,因为动态会员游戏网站,一直在想办法做些优化,今天想到如果把php的session放在内存,可能会提升网站的访问速度。于是开始搜索资料。经过一天的摸索,终于搞定。问题主要出在...
  • kyn
  • kyn
  • 2009-05-09 21:24
  • 5559

PHP的session存放路径及其配置session.save_path

PHP配置文件中session.save_path负责session文件的存放位置。 如果没有配置则不会生成session文件,如果配置的目录session.save_path = "E:/ttt"...

PHP中用户自定义Session处理机制

session.save_handler = user,也可在 PHP 中进行设置:ini_set(‘session.save_handler’, ‘user’); 注意一定要把 “session....

php的session机制以及自定义会话管理器

如果需要在数据库中或者以其他方式存储会话数据, 需要使用 session_set_save_handler() 函数来创建一系列用户级存储函数。 PHP 5.4.0 之后,你可以使用 Sessio...

php session_set_save_handler 函数的用法(mysql)

<?php /*============================文件说明======================================== @filename: se...

php session_set_save_handler 函数的用法(file)

以下只是介绍一些函数的简单用法: void session_set_save_handler (string open, string close, string read, string writ...

php session_set_save_handler 函数的用法(mysql)

<?php /*============================文件说明======================================== @filename: session....

session_set_save_handler函数的用法

session_set_save_handler   (PHP4   > =   4.0b4) void   session_set_save_handler   (string   open,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)