时间到了,自己回答。。。
1、session 不依赖 cookie,使用 cookie 是为了保存 sessionId,把 sessionId 附在url、或者放在表单中,请求时,服务器也能得到 sessionId,不过使用 cookie 会方便的多。
2、session 的数据能放在很多地方,文件、数据库、缓存,等等,只要能持久化就行,PHP 默认采用文件方式保存 session 的数据是因为实现简单、所有环境都支持,能演示出效果。
3、略,不清楚的必须自己画一遍流程图的。
4、PHP 内置的 session 机制,是使用内置的 session 系列函数,并将 session 数据保存到文件中。大流量的网站,如果 web 服务器大于一台,这种机制就有问题。
假设有 A B 两台 web 服务器,用户的请求会随机分发到这两台上,某用户请求登录时,在 A 上创建了 session 数据文件,但下一次请求被分配到 B,B 上面没有对应 session 数据文件,于是程序判断用户没有登录,于是用户认为网站出错。当然有补救的方案,同步 session 数据文件,但这复杂化了,简单的方案,应该是自己去实现 session 机制,将 session 数据保存到数据库等地方。至于数据库、数据表压力会不会太大,需要分散压力,是另一个话题。
延伸问题:
1、印象中,是因为用 cookie 保存用户数据有安全问题,因为 cookie 是客户端的,然后就折腾出了 session。
2、将用户的 session 数据结构化的保存起来,并能够索引,比如建立表结构、每个用户的 session 数据存为一条记录。
另外问大家个问题:
前几天有同学说要去报培训班学习 PHP,大家怎么看?这里有多少同学对培训班有兴趣的?