服务器如何存储使用PHP创建的会话变量?

时间:2013-06-25 14:23:50

标签: php session session-variables sessionid

我想知道服务器如何存储(不是位置而是程序/方法)并管理会话变量。如果我错了,请更正。

我把它想象成: -

假设我创建了三个会话变量

$_SESSION['id']=12;
$_SESSION['flag']=t;
$_SESSION['name']=alex;

然后服务器创建一个表(或任何文件)

-----------------------------------------------
session_id |  id   |   flag  |  name
-----------------------------------------------
a45sdg665  |  12   |   t     |   alex
           |       |         |   
           |       |         |

session_id由服务器创建,对每个用户都是唯一的。服务器然后将session_id作为cookie发送到客户端浏览器。当用户在会话期间发送另一个请求时,浏览器也会发送该session_id以及请求。然后,服务器引用该表并可以识别用户。 作为程序员,我们可以使用id(由我们存储)从数据库中获取不同的信息。 (如果我错了,请简要说明一下程序。)

5 个答案:

答案 0 :(得分:1)

会话数据被序列化为文本字符串并存储在每个会话的文件中,通常名为“sess_SESSIONIDHERE”,可能在/ var / lib / php5中(至少在Debian上默认)。看看php ini设置“session.save_path”以发现会话文件的存储位置。

http://www.php.net/manual/en/session.configuration.php#ini.session.save-path

答案 1 :(得分:1)

会话可能但不必使用数据库后端。其余的陈述通常都很好(cookies,session_id)。

PHP中的默认会话存储是/tmp文件夹中的文件 - 可以通过打印session.save_path来检查路径。

总结一下,会议可以利用:

  1. 硬盘上的文件
  2. 存储器中的文件,例如在/dev/shm及其子文件夹(/ tmp也可以驻留在RAM中)
  3. 数据库 - 会话表可以驻留在磁盘或内存中
  4. 专门的内存后端
  5. 回复您的评论:您了解在浏览器和Web服务器之间共享会话数据的过程。但是,如果要手动访问会话数据(在PHP脚本之外),则使用的会话存储对您很重要。

    如果将user_id存储在$_SESSION变量中,则是 - 您可以使用它在任何后续请求中使用PHP脚本在数据库中查询用户相关信息。

答案 2 :(得分:0)

默认情况下,会话数据存储在session.save_path(sessions configuration

中保存的文件中

答案 3 :(得分:0)

检查一下。它只是作为文件存储在服务器的/ tmp目录中。

Where are $_SESSION variables stored?

答案 4 :(得分:0)

$_SESSION变量存储的位置由PHP的session.save_path配置决定。通常这是Linux / Unix系统上的/ tmp。如果不是100%确定,请使用phpinfo()函数查看您的特定设置,方法是在域的DocumentRoot中创建包含此内容的文件。

更多请参阅:

this link