【发布时间】:2011-02-07 15:28:27
【问题描述】:
我有一个正在开发 PHP codeignitor 和 MySQL 的社交网站。我将用户会话存储在数据库中以处理多服务器环境。目前只有 1 个数据库。
1) 要处理多个数据库(+ 多服务器),用户会话将如何存储以及存储在何处?我假设数据库不会在多数据库环境中工作。
2) 给用户的会话 ID,是从数据库自动增加还是从应用程序逻辑生成?我认为它应该是一个 GUID?
3) 除了会话 ID,我还有一个 user_session 表,它记录了所有与会话相关的详细信息,例如 login_datetime、logout_Datatime、如果用户在网络/移动设备上等。因此必须分两个阶段写入该表:当用户登录并在用户注销时再次登录。问题是当用户注销时系统应该遵循什么逻辑来写入日期?就像系统如何知道将数据写入哪个 user_session 一样,因为这个 PK ID 是一个数据库驱动的自动增量值,并且是在创建主会话 ID 之后创建的。所以最后需要查询 user_session 表找到 user_Session ID 然后写入。
【问题讨论】:
-
你使用过默认的 PHP 会话机制吗?
-
在数据库中存储用户会话与多服务器环境有什么关系?为什么默认 PHP 会话不适合您?反正。多数据库环境有什么问题?您在这里看到了哪些特殊问题?
-
使用 memcached 进行会话效果很好。
-
我从未使用过 memcache 来存储会话。该网站即将推出,尚未上线。在数据库中存储会话是如果有多个数据库并且会话存储在数据库A中,那么当使用rlogs关闭2小时后,系统需要从数据库A和数据库B获取ID。所以它需要知道。与多台服务器相同。一个是网络服务器,一个是图像服务器,一个是视频服务器,等等。每个服务器都需要检查用户的会话,这需要相同,因为所有用户活动都链接到同一个会话
-
imp 方面是我需要用户的最后活动日期时间来写入会话注销日期,因此我需要以某种方式知道如何在用户注销时找到用户的会话,系统将如何找到它桌子?
标签: php database session codeigniter