我正在使用PHP和MySQL。我在每个页面上都需要一些站点配置变量,例如site_url,site_path,contact_email,default_timezone等。
我没有在每次页面刷新时从数据库中检索这些值,而是将它们存储在第一页访问的会话中。
我一直在使用这种方式,我没有遇到任何问题。我现在看到的唯一缺点是如果一个值如果改变了,我必须关闭浏览器以清除会话然后重新加载。 (但这些值几乎是静态的)
我想知道这是否可以。这会引起任何其他问题吗?
而且,我可以在会话中存储多少信息?有限制吗?
答案 0 :(得分:1)
其中一些听起来像是全球价值观,对所有用户来说都是共同的。这对会话价值来说是一个糟糕的候选人。将它们存储在某个文件中会更好。将“site_url”存储为50,000个会话是没有意义的,如果每个会话的值相同。浪费时间和空间。
会话存储应该适用于每个用户数据,不能/不能在多个用户之间共享的内容。
会话存储没有实际限制,除了你有多少磁盘空间,PHP的memory_limit,以及你愿意浪费多少CPU时间来解析网站上每次点击的数兆字节数据。
答案 1 :(得分:0)
在会话中存储的数量没有限制但是php可以使用多少内存http://ca.php.net/manual/en/ini.core.php#ini.memory-limit
答案 2 :(得分:0)
这取决于您期望的用户数量。在任何超过几十个的情况下,将这些信息存储在会话数据中并不是一个好主意。
在这种情况下,会话不应该真正充当缓存。问题是如果你有1万个会话,那么会话数据必须重复10万次。这效率不高。
如果您的项目大小有保证,那么最好使用memcached(或APC缓存)之类的东西来存储给定时间段内的缓存值。如果您正在使用数据库类来处理配置,请从缓存中获取DB类,以便调用代码的所有位置都可以执行此操作而不必担心实现。您可以尝试将文件用作缓存机制,但在这种情况下您将不得不担心缓存超时和文件访问。在做出决定之前进行衡量。