1

我对 Zend 身份验证会话存储系统有点困惑。我将尝试解释我的问题。请尝试表达您对 zend session 或我的假设和问题的看法或您所知道的任何事情。

默认情况下,Zend_Auth_Adapter_DbTable 在认证成功后将提供的身份返回给 auth 对象。如果我使用 getStorage() 或 getIdentity(),那么我可以将“会话值(id,名称,..)”检索到一些变量。!!如果您认为以上两个假设都是正确的,那么我的问题是,

  1. 会话值默认存储在哪里?(默认情况下,它使用哪个位置来存储会话?)
  2. 如果我指定会话保存路径,如下所示。如果会话根据问题 1 存储,为什么我们需要将这些会话存储在一个文件夹中?save_path = /home/myaccount/zend_sessions/myapp
  3. 如果我使用 Zend_Session_SaveHandler_DbTable。是什么使它比上述两个选项更好?
  4. 或者,您能否提出您的想法,我们可以使会话在 Zend 中持久化?目前我们注册了100万用户,那么我们如何才能有效地进行用户会话存储呢?

提前感谢所有参与讨论的人,如果您认为我的任何问题或假设是错误的,请尝试表达您的方式。所以我可以从错误中吸取教训

4

2 回答 2

2

我不是 100% 确定你的问题,但我会尽力回答:-)

  1. 在默认的 linux 机器上,它应该是 /tmp 或 php.ini 中配置的任何内容
  2. 考虑共享托管环境(安全问题)
  3. Zend_Session_SaveHandler_DbTable 如果你有,例如,负载平衡的 web 服务器,那么用户的会话独立于他连接到的 web 服务器。
  4. 如果您只使用一台服务器(未共享),并且不需要“谁在线”之类的功能,那么文件系统上的默认会话处理是最好的解决方案(在我看来)。
于 2011-07-11T06:07:37.237 回答
0
  1. Zend session 内部使用 php 全局变量 $_SESSION,保存 session 的路径由 php.ini 设置控制,所以可以使用session_save_path

  2. 对于 session_save_path,您可以提供需要保存会话的文件夹名称。默认情况下会话存储在临时文件夹中,每次有人清除临时文件夹会话数据都会丢失。所以最好使用其他文件夹。

  3. Db sessions are used for session sharing. In large websites like google, one server wont serve all users requests, so if you requested something, session will get created and you will get response, for your next request there is no guarantee that you will hit the same server, in that case the 2nd server tries to fetch the session data from some distributed location like db or memcache. Memcache is best option than db for distributed session, as it is more faster.

  4. What information you are trying to save in session, if its something you are trying to save for longer time then why can`t you associate that information with user object instead of saving in session.

于 2011-07-11T07:41:44.237 回答