1.如何实现30分钟过期的session?
1. 加时间戳,
$_SESSION
[‘expire’] = time()+1800;
业务逻辑去判断.
2.
ini_set
(‘session.cookie_lifetime’ , 1800)
3.或者用memcache,存储的时候,加上1800的有效期.
4.接管session处理权,第1题中,
$mem
->connect(‘专门的一台memcached服务器’).
把session文件放在专门的服务器中. 各个web服务器共享此session服务器.
5.如果不跨主域, 如book.163.com, lady.163.com , mil.163.com
在setcookie(‘key’,’value’,’expire’ , /path‘ , ‘.163.com’);
域名只写到主域名,cookie将会在各个子域名生效.
如果必须跨域,我们依照oauth原理.
2.请简述php会话(session)实现原理,并考虑如下问题:
禁用了cookie,session能否使用?
如何把session存储数据库/memcached/redis
如何实现一个严格的30分钟过期的会话?、
如何实践web服务器集群的会话共享?
如何实现两个不同域站点的会话共享?
答: 能!
cookie和session的关系
cookie传递session_id,供服务器决定session文件.
所以只要能向服务器传递session_id,session就能正常使用.
而cookie只是传递session_id的一种方式而已.
用url也能传递session_id
php.ini 配置如下:
session.use_only_cookies = 0
session.use_trans_sid = 1
OK了.