PHP - 什么是会话变量的替代品

时间:2011-10-15 06:25:45

标签: php session variables scope global

我在会话中存储了很多变量,这会产生性能问题。 所以,我被要求将它存储在其他地方,我可以将它存储在数据库中,但这又会很慢。

存储会话变量有更好的替代方法吗? 全局变量是每个文件/请求。虽然cookie会向用户打开变量,但不会保留服务器端。

提前感谢您的回答!

3 个答案:

答案 0 :(得分:5)

考虑memcached这样的半持久数据。将缓存密钥存储在$_SESSION中,然后使用它来获取缓存的数据。

由于memcached将所有内容缓存在内存中(并且严格来说是键值存储),因此它比数据库更快。它对于像会话这样的东西来说有点理想,因为如果你碰巧丢失了缓存的数据,就不会丢失任何严重的东西(用户只是意外地被注销)。

实际上,PHP Memcache实现provides a session handler(参见示例#2)可以透明地为您处理会话,而无需您对代码进行任何修改。

答案 1 :(得分:2)

php会话可以配置为以多种方式工作。如果服务器上有足够的可用内存,可以从内存缓存中运行它。这将是高性能

您也可以使用数据库存储会话信息,但正如您所说,这可能会很慢。

为什么它目前会产生性能问题? 是否有大量会话正在创建,或者您是否在会话中存储了大量数据?

答案 2 :(得分:0)

这取决于有多少变量“很多”? rails的默认会话存储使用cookie,这通常对我来说足够了。如果您担心暴露变量,cookie会被加密。你必须拥有服务器端吗?使用html5,您可以使用localStorage选项。