php session变量相关问题

以下假设全是在默认设置下。这问题纠结很久,特此求助!!!1;session变量是保存在服务器内存中的么?若不重复请求服务器,默认保存时间是多久呢?2;如果不设置sessi... 以下假设全是在默认设置下。这问题纠结很久,特此求助!!!
1;session变量是保存在服务器内存中的么?若不重复请求服务器,默认保存时间是多久呢?

2;如果不设置session的lifetime,关闭浏览器后,没有再请求该页,服务器能否或通过什么方式知道我已经关闭了浏览器,从而该销毁该变量?
3;如果不知道已经关闭了浏览器,那session变量岂不要一直保留,加重服务器压力。
展开
 我来答
百度网友f4672095b
2013-10-28 · TA获得超过628个赞
知道小有建树答主
回答量:379
采纳率:80%
帮助的人:332万
展开全部
1、session以文件形式,保存在服务器里。具体路径是php.ini里面的session.save_path所指定的。默认生存周期是1440秒。
2、不设置session的lifetime,则按默认的生存周期计算。没有新请求,则根据达到生存周期后自动消毁。服务器无法知道你已经关闭了浏览器,只能按时间来计算。
3、达到生存周期的就消毁,不会一直保留在服务器。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
巅峰之君临天下
2013-10-28
知道答主
回答量:3
采纳率:0%
帮助的人:5.2万
展开全部
1.保存在哪里是在这里定义的 Php.ini
[Session]

session.save_handler = files 这里是文件的方式,你可以设置成user ,使用memcache保存session等各种手段 或者在代码里动态设置 比如以数据库存储逇方式 使用
session_set_save_handler
设置session的open close read write destory gc 的具体使用方式

session保存时间是在这里定义的
session.cookie_lifetime = 0 这里是永久保存 直到你关闭浏览器 你可以设置session时间
2 和3 :还有 在php.ini中 session.gc_probability = 1 session.gc_divisor = 1000 这是垃圾回收机制 这2个的比率 代表了 垃圾回收的几率 就是别人访问你的网站 服务器就有1/1000的几率 删除过期session
追问
session.cookie_lifetime = 0  这里是永久保存  直到你关闭浏览器

1;如果为一直不刷新浏览器,就那样保持开着,那就一直保存,这为明白。
2;但是如果我关闭了浏览器,不再请求,服务器怎么知道我关闭了浏览器,它不知道,还永久保存,如果一直这样,服务器不早晚要爆了。
追答
session.gc_maxlifetime = 1440   超过这个时间后 session就会被标记为垃圾 
虽然服务器里面有过期的session 但是只要别人继续访问你的网站,不管什么页面 都有1/1000的几率 触发这个机制 会删除 所有标记为垃圾的session

所有这个 垃圾回收的 比率 要看情况设置 访问量大 就要设置的小 访问量小的话 就要设置大1点 服务器比如apache 与你浏览器直接 其实每隔一段时间是在 通讯的 ,关闭之后, 那么2者的通讯就会断开,此次的session 当超过session.gc_maxlifetime 就会失效了 就会被 标记垃圾标志

上面有个 session的生存时间 这里的 垃圾标记时间 是2个概念 比如session生存时间到了 那么服务器不会使用它 ,它也不会被标记为垃圾, 当从他失效那一刻起,过了gc_maxlifetime之后 他会被标记为垃圾 ,此时还不会被删除 , 只有当 触发垃圾回收机制时 才会被删除
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式