2013-04-30 42 views
2

问题基本上说这一切。我获得了很多流量,每天点击大约20万次。我想将原始引用来源(来自哪里)存储在会话变量中以用于各种目的。这是一个好主意,还是应该坚持在数据库中?

回答

2

你可以同时做两个:)。 PHP允许您在脚本中定义会话的存储逻辑。这样可以将会话存储在数据库中。检查手册set_session_save_handler()

如果您使用负载平衡(或计划执行一次),使用数据库将有其优势。这样,所有的Web服务器都可以从同一个数据库(或集群)读取会话数据,负载平衡器不必担心应该将哪个请求转发到哪个Web服务器。如果会话数据存储在默认机制的文件中,那么负载平衡器必须将会话的每个请求都禁止到相同的物理Web服务器,这更加复杂,因为负载平衡器必须在HTTP级别上工作。

0

默认的PHP会话处理程序是文件处理程序。所以,相关的问题是:

  1. 您是否使用超过1个Web服务器没有粘滞会话(负载平衡)?
  2. 用完了磁盘空间吗?
  3. 你有没有打算这样做?

如果是(对任何),然后将其存储在数据库中。或者,甚至更好的方法是,在每个请求上计算这些东西(或将它缓存在Memcached之类的地方)。您还可以将这些内容存储在签名的cookie中(以防止被篡改)。

1

如果您只需要用户的当前会话,您就可以将信息存储在cookie中。那么你根本不需要把它存储在你的最后。

有一些下降两侧还有:

  1. 他们可能有饼干禁用,所以你可能无法保存。
  2. 如果您下次需要该信息可能无法获取,因为它可能已被删除。
  3. 不是超级安全的,所以不要保存密码,银行信息等

所以,如果需要这个信息是必需的,不管是什么,也许它不是要走的路。如果信息是可选的,那么这将起作用。