session和cookie在本质上并没有什么区别,都是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接的机制。
session的实现可以有多种,如URL重写、cookie,通过在cookie中存储sessionID实现session传递。
PHP的session默认通过文件的方式实现,即存储在服务器端的session文件,每个session一个文件。
session通过一个成为PHPSESSIONID的cookie和服务器联系。session是通过sessionID判断客户端用户的,即session文件的文件名,如果客户端禁用cookie,只要关闭浏览器,再次请求页面又要重新注册session,这种情况可以通过URL或者隐藏表单来解决。
对于访问大的站点,用户默认的session存储方式并不适合,较优的方法是用Data Base(可以是普通数据库、内存表等)存取session。解决这个问题的方案就是session_set_save_handler
在大流量网站中,session入库存在效率不高、占据数据库资源等问题。这种情况,可以使用Memcached、Redis等key-value的数据存储方案实现高并发、大流量的session存储.