http://www.feiyan.info/11.html
php.ini改称 session.save_handler="user"多服务器共享SESSION 的主要障碍及解决办法
通过了解 SESSION 的工作原理,我们可以发现,在默认情况下,各个服务器会各自分别对同一个客户端产生SESSION ID,如对于同一个用户浏览器,A 服务器产生的 SESSION ID是30de1e9de3192ba6ce2992d27a1b6a0a,而 B 服务器生成的则是c72665af28a8b14c0fe11afe3b59b51b。另外,PHP 的 SESSION 数据都是分别保存在本服务器的文件系统中。确定了问题所在之后,就可以着手进行解决了。想要共享 SESSION 数据,那就必须实现两个目标:
一个是各个服务器对同一个客户端产生的 SESSION ID 必须相同,并且可通过同一个 COOKIE 进行传递,也就是说各个服务器必须可以读取同一个名为 PHPSESSID 的 COOKIE;
另一个是 SESSION 数据的存储方式/位置必须保证各个服务器都能够访问到。 简单地说就是多服务器共享客户端的 SESSION ID,同时还必须共享服务器端的 SESSION数据。
SESSION数据库的优点,如果服务器采用群集的方式的话就不能保持session的一致性,所以我们就绪要采用数据库的方式来保存session, 这样,不管有几台服务器同时使用,只要把他们的session保存在一台数据库服务器上就可以保存session的完整了.还有诸如:控制一个帐号只能一个人登录,统计在线人数,踢出某个在线用户.总之用户的状态就掌握在我们手里了.并且不用修改代码.多站点共享session,实现Application变量(多用户共享的全局变量)
只不过这样的功能会给数据库带来严重的I/O负担,但凡有点流量再碰上点极品的用户这样的数据库性能肯定要被严重拖累
SessionHandlerInterface接口是PHP内置的接口,直接实现就行了
具体可以看php手册关于session_set_save_handler函数的解释!