是否有可能同时为网站的所有用户提供相同的会话?

时间:2011-03-09 19:54:21

标签: php

是否可以同时为网站的所有用户提供相同的$ _SESSION?

3 个答案:

答案 0 :(得分:7)

我用以下方式解释了你的问题:

  

是否可以同时为网站的所有用户提供相同的[州]?

是的,共享状态通常存储在数据库中,但状态也可能存储在本地文件系统中。

使用$_SESSION是为了保存 用户的状态。如果您滥用该工具,则会创建一个不安全的系统。

答案 1 :(得分:1)

如果没有为一个巨大的安全漏洞打开您的网站,就无法进行全球会议。

相反,让我们看看你想要做什么,这是抓取数据,同时避免每页查询。

1)将值写入文件然后在每个请求中读取它是一个选项。默认情况下,会话存储在服务器上的文件中,因此它具有与会话相同的速度。

2)将其存储在缓存中,例如APC,Memcache,Redis。

请记住这些是缓存的值 - 您仍然需要定期更新它们。您必须使用cron作业或让客户端更新它们。但是当缓存过期并且大量客户端试图立即更新缓存时,您会怎么做?这被称为狗屎效应,这是值得思考的问题。

或者您只需编写SQL查询并在每个页面执行它并保持简单。你为什么不想这样做?您是否对代码进行了分析并确定它是一个实际问题?在它成为已知问题之前担心这是浪费时间。

答案 2 :(得分:1)

  

我想做以下事情   if($ _ SESSION ['new_posts'] + 60>   time())echo“有新帖子   论坛!“;我不想使用mysql   为此。

简单快捷的方法

在您发布的每个新帖子上:

//will write an empty file or just update modification time
touch ('new_posts.txt'); 

然后:

if(filemtime('new_posts.txt') + 60 > time()) { ... }