PHP会话原理
我们知道,会议是一种方法来保持用户的会话数据在服务器端,和相应的cookie来保持用户数据在客户端side.http协议是无状态协议,后与浏览器失去联系的服务器响应,最早的Netscape,将Cookie的浏览器,用户可以进行数据交换整个页面,然后服务器会话数据是如何记住大量的用户

第一个是连接客户端到服务器端,每个客户都有一个独特的身份,使得服务器能够识别。有两种方式来显示独特身份:饼干或得到,PHP会话的默认配置将建立一个PHPSESSID叫饼干(可以修改session.name值用PHP。ini中指定),如果客户端禁用cookie,你也可以指定通过获取会话ID的方式向服务器(修改session.use_trans_sid参数PHP INI)。

当我们在服务器端session.save_path目录,我们会发现许多文件类似于sess_vv9lpgf0nmkurgvkba1vbvj915,这实际上是数据对应的会话ID vv9lpgf0nmkurgvkba1vbvj915。道理就在这里。客户端向服务器发送会话ID。服务器发现基于会话ID读取相应的文件时,它得到会议的价值当它读取序列化,则序列化和再写当它被保存。

事实是,如果服务器不支持会话或如果你想自定义会话,完全DIY,通过uniqid PHP会话ID不会重复产生,然后找一个地方来存储会话内容可以,你也可以学习Flickr会话存储在MySQL数据库。

你为什么要执行session_start()在使用会话吗
在了解原理,所谓的会议实际上是一个会话的客户端ID服务器会话文件,session_start会话(新)在执行告诉服务器Cookie和准备会议文件,或您的会话内容可以存储;执行session_start之前读取会话()是告诉服务器,根据会话ID的会话文件反序列化。

只有一个会话功能可以执行之前session_start(),session_name():读或指定会话名称(例如,默认为PHPSESSID),当然,在session_start。

会话影响系统性能
会议是在访问量最大的网站之一,影响系统性能,影响文件系统的设计带来的性能的原因,在同一个目录中超过10000的文件,该文件的位置将非常耗时,PHP支持的会话散列的目录,我们可以修改php.ini session.save_path = 2; /路径/ / /会话目录,那么会话将被存储在子目录,每个目录有{ 0 ~ F } 16个子目录,但似乎PHP会话不支持你需要创建一个目录,然后创建一些目录之前的。

问题的效率有一个小文件的问题,我们是不是太大,一般的会话数据(1 ~ 2K),如果有大量的1到2K文件在磁盘IO效率,肯定会很差,PHP指南推荐使用ReiserFS文件系统,但其ReiserFS的Reiserfs担心。妻子杀死,SUSE也抛弃了Reiserfs。

事实上,有许多方法来存储会话,PHP的-我| grep登记保存可以被处理,如注册用户节省处理文件SQLite = > eAccelerator可以保存文件,使用SQLite,eAccelerator,如果服务器安装Memcached和mmcache选项。当然还有很多,如MySQL,PostgreSQL等都是不错的选择。

同步会话
我们可能有很多前端服务器,用户登录在一个服务器上,一个会话信息,然后访问站点的一些页面到B服务器可能会跳转,如果没有会话信息,这次对B服务器并没有特别的处理,那可能是个问题。
会话同步有多种类型。如果你存储在memcached或MySQL,它是指定同一位置很容易。如果您以文件的形式存在,可以使用NFS统一存储。

另一种方法是通过cookie加密实现,用户登录一个服务器,在用户的浏览器上加密cookie,当用户访问B服务器时,检查会话,如果没有问题,如果没有,则测试cookie的有效性,cookie有效。这是B服务器上会话的重构,这个方法实际上非常有用。如果网站上有很多子通道,服务器不在计算机机房,所以会话不能同步,希望进行统一登录。那很有用。

当然,还有另一种方法可以在负载平衡的级别上保持会话,并将访问者绑定到服务器。它的所有访问不需要服务器上的会话同步。这些都是操作和维护的各个方面。说了这么多,选择根据自己的应用程序中使用的会话,不是因为大家都说会影响系统的性能,解决问题,谨小慎微,问题是躲得起也都不适合这里的关键。