3

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

我将其想象为:-

假设如果我创建三个会话变量

$_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(由我们存储)从数据库中获取不同的信息。(如果我错了,请简要说明过程)。

4

5 回答 5

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

于 2013-06-25T14:26:45.973 回答
1

会话可以但不必使用数据库后端。您的其余语句通常都很好(cookies、session_id)。

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

总而言之,会话可以利用:

  1. 硬盘上的文件
  2. 内存中的文件,例如 in/dev/shm及其子文件夹(/tmp 也可以驻留在 RAM 中)
  3. 数据库 - 会话表可能驻留在磁盘或内存中
  4. 专门的内存后端

回复您的评论:您了解在浏览器和 Web 服务器之间共享会话数据的过程。但是,如果您想手动访问会话数据(在 PHP 脚本之外),使用的会话存储对您来说很重要。

如果您存储user_id$_SESSION变量中,那么可以 - 您可以使用它在任何后续请求中从您的 PHP 脚本中使用它来查询数据库以获取用户相关信息。

于 2013-06-25T14:33:17.613 回答
0

默认情况下,会话数据存储在 session.save_path (会话配置)中保存的文件中

于 2013-06-25T14:26:38.317 回答
0

看一下这个。它通常作为文件存储在服务器的 /tmp 目录中。

$_SESSION 变量存储在哪里?

于 2013-06-25T14:26:55.793 回答
0

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

更多请参考:

这个链接

于 2013-06-25T14:27:01.460 回答