• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php实现session自定义会话处理器的方法_php技巧

php 搞代码 3年前 (2022-01-26) 32次浏览 已收录 0个评论

本文实例讲述了php实现session自定义会话处理器的方法。分享给大家供大家参考。具体分析如下:

session自定义会话处理器,即就是说,所有关于session的各种操作,都可以通过自定义会话来自己决定。什么意思呢?先来看php.ini里的session.save_handler配置。

默认情况下,session.save_handler = files,表示调用的是系统定义好的处理器(所谓处理器,其实就是一大堆函数/方法)。您可从将session.save_handler设置成 user 或者 memcache,甚至是网络文件系统(云计算)。

session.save_handler = user:表示调用自定义的会话处理器; session.save_handler = memcache:表示…略….(大致是保存在内存里,效率更高)。

当设置 session.save_handler = files 时,关于session的操作,实际上调用了session.set_save_handler(具体查看php手册)的六个回调函数(所谓回调函数,就是系统调用的,不需要指定调用)。六个回调函数见下面代码,php手册里也有:

<?php</p><p>function open($save_path, $session_name)<br />{<br />  global $sess_save_path;<br />  $sess_save_path = $save_path;<br />  return(true);<br />}</p><p>function close()<br />{<br />  return(true);<br />}</p><p>function read($id)<br />{<br />  global $sess_save_path;<br />  $sess_file = "$sess_save_path/sess_$id";<br />  return (string) @file_get_contents($sess_file);<br />}</p><p>function write($id, $sess_data)<br />{<br />  global $sess_save_path;<br />  $sess_file = "$sess_save_path/sess_$id";<br />  if ($fp = @fopen($sess_file, "w")) {<br />    $return = fwrite($fp, $sess_data);<br />    fclose($fp);<br />    return $return;<br />  } else {<br />    return(false);<br />  }<br />}</p><p>function destroy($id)<br />{<br />  global $sess_save_path;<br />  $sess_file = "$sess_save_path/sess_$id";<br />  return(@unlink($sess_file));<br />}</p><p>function gc($maxlifetime)<br />{<br />  global $sess_save_path;<br />  foreach (glob("$sess_save_path/sess_*") as $filename) {<br />    if (filemtime($filename) + $maxlifetime < time()) {<br />      @unlink($filename);<br />    }<br />  }<br />  return true;<br />}</p><p>session_set_save_handler("open", "close", "read", "write", "destroy", "gc");<br />session_start();<br />// proceed to use sessions normally<br />?>

当你把 session.save_handle

本文来源gaodai.ma#com搞##代!^码@网*
搞gaodaima代码

r设置为user时,你可以把上面这段代码重写,改成你所需要的方法,在执行php文件里调用即可。比如,默认情况下,我们保存 session 的文件名,都是以 sess_ 开头的,其实就是在这里设置的,你可以改成你想要的。

当然,你也可以修改 session 保存的方式,默认是保存在文件里,您可以保存到数据库里(当然不建议你这么做,数据库读取速度更慢),也可以设置保存在内存里(速度最快,在memcache相关内容中有详细讲解)。

希望本文所述对大家的php程序设计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php实现session自定义会话处理器的方法_php技巧

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址