700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php实现session自定义会话处理器办法【PHP】

php实现session自定义会话处理器办法【PHP】

时间:2020-10-25 12:05:51

相关推荐

php实现session自定义会话处理器办法【PHP】

后端开发|php教程

php,session,自定义,会话,处理器,方法

后端开发-php教程

响应式布局网站源码下载,vscode安装c 环境,ubuntu管理系统,tomcat监控带宽变化,爬虫 orc,php ascii转字符,广州seo的优化方案,导航网站网页模板下载地址,多米影视管理系统的模板lzw

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

淘宝客直播间程序源码,ubuntu自带分区工具,tomcat7查看日志,红信爬虫,php效验码,广州抖音seo搜索排名技术教学lzw

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

风景区门户网站源码,vscode引入类库,ubuntu 驱动导入,tomcat 启动后乱码,爬虫原则,php 报价系统,seo排名手法教学,平台网站模板素材图片下载,wordpress企业文化模板下载lzw

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

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

<?php

function open($save_path, $session_name)

{

global $sess_save_path;

$sess_save_path = $save_path;

return(true);

}

function close()

{

return(true);

}

function read($id)

{

global $sess_save_path;

$sess_file = "$sess_save_path/sess_$id";

return (string) @file_get_contents($sess_file);

}

function write($id, $sess_data)

{

global $sess_save_path;

$sess_file = "$sess_save_path/sess_$id";

if ($fp = @fopen($sess_file, "w")) {

$return = fwrite($fp, $sess_data);

fclose($fp);

return $return;

} else {

return(false);

}

}

function destroy($id)

{

global $sess_save_path;

$sess_file = "$sess_save_path/sess_$id";

return(@unlink($sess_file));

}

function gc($maxlifetime)

{

global $sess_save_path;

foreach (glob("$sess_save_path/sess_*") as $filename) {

if (filemtime($filename) + $maxlifetime < time()) {

@unlink($filename);

}

}

return true;

}

session_set_save_handler("open", "close", "read", "write", "destroy", "gc");

session_start();

// proceed to use sessions normally

?>

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。