php 如何设置一个严格控制过期时间的session
发布时间 - 2026-01-11 00:59:06 点击率:次1.php session 有效期

PHP的session有效期默认是1440秒(24分钟),如果客户端超过24分钟没有刷新,当前session会被回收,失效。
当用户关闭浏览器,会话结束,session也会失效。
可以修改php.ini的session.gc_maxlifetime来设置session的生命周期,但并不能保证在超过这一时间后session信息立即会删除。因为GC是按机率启动的,可能在某一个长时间内都没有被启动。那么大量的session在超过session.gc_maxlifetime后仍然有效。
2.session.gc_maxlifetime,session.gc_probability,session.gc_divisor说明
session.gc_maxlifetime = 30 表示当session文件在30秒后没有被访问,则视为过期session,等待GC回收。
GC进程调用的概率是通过session.gc_probability/session.gc_divisor计算得来的,而session.gc_divisor默认是1000,
如果session.gc_probability = 1000,那么GC进程在每次执行session_start()时都会调用,执行回收。
把session.gc_probability/session.gc_divisor的机率提高,会有帮助,但会对性能造成严重影响。
3.严格控制session过期方法
1.使用memcache/Redis来保存session,设置过期时间,因为memcache/redis的回收机制不是按机率的,可以确保session过期后失效。
2.只使用php实现,创建一个session类,在session写入时,把过期时间也写入。读取时,根据过期时间判断是否已过期。
<?php
/**
* Session控制类
*/
class Session{
/**
* 设置session
* @param String $name session name
* @param Mixed $data session data
* @param Int $expire 超时时间(秒)
*/
public static function set($name, $data, $expire=600){
$session_data = array();
$session_data['data'] = $data;
$session_data['expire'] = time()+$expire;
$_SESSION[$name] = $session_data;
}
/**
* 读取session
* @param String $name session name
* @return Mixed
*/
public static function get($name){
if(isset($_SESSION[$name])){
if($_SESSION[$name]['expire']>time()){
return $_SESSION[$name]['data'];
}else{
self::clear($name);
}
}
return false;
}
/**
* 清除session
* @param String $name session name
*/
private static function clear($name){
unset($_SESSION[$name]);
}
}
?>
demo:
<?php
session_start();
$data = '123456';
session::set('test', $data, 10);
echo session::get('test'); // 未过期,输出
sleep(10);
echo session::get('test'); // 已过期
?>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# php session 过期设置
# php session 过期时间
# php session 过期
# 这一
# 会有
# 也会
# 已过期
# 时间内
# 会对
# 并不能
# 得来
# 创建一个
# 严格控制
# 关闭浏览器
# 客户端
# 判断是否
# 在某一
# 期后
# gc_divisor
# gc_probability
# memcache
# Redis
# session_start
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在橙子建站中快速调整背景颜色?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
个人摄影网站制作流程,摄影爱好者都去什么网站?
Laravel如何处理CORS跨域请求?(配置示例)
想要更高端的建设网站,这些原则一定要坚持!
javascript中的try catch异常捕获机制用法分析
如何确保西部建站助手FTP传输的安全性?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
如何在宝塔面板中创建新站点?
Thinkphp 中 distinct 的用法解析
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
大学网站设计制作软件有哪些,如何将网站制作成自己app?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
SQL查询语句优化的实用方法总结
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
佛山企业网站制作公司有哪些,沟通100网上服务官网?
JS弹性运动实现方法分析
香港服务器选型指南:免备案配置与高效建站方案解析
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
如何在阿里云服务器自主搭建网站?
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
如何撰写建站申请书?关键要点有哪些?
常州企业网站制作公司,全国继续教育网怎么登录?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
高防服务器租用如何选择配置与防御等级?
java中使用zxing批量生成二维码立牌
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
如何在不使用负向后查找的情况下匹配特定条件前的换行符
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
手机网站制作与建设方案,手机网站如何建设?
Laravel中的withCount方法怎么高效统计关联模型数量
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
简历没回改:利用AI润色让你的文字更专业
如何在建站主机中优化服务器配置?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
桂林网站制作公司有哪些,桂林马拉松怎么报名?
轻松掌握MySQL函数中的last_insert_id()
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
Android GridView 滑动条设置一直显示状态(推荐)
浅析上传头像示例及其注意事项
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
如何在自有机房高效搭建专业网站?

