我一直对会话在内部的工作方式感兴趣,但是我对C的知识很少(并且不确定在PHP源代码中的位置)。
这是我目前对会话的了解:
$_SESSION
它是否正确?另外,创建会话ID的方法是什么?我认为这是基于时间的,但是如果两个用户同时发送请求该怎么办?内部采用什么方法来防止获得相同的ID?
谢谢,
我对内部会话处理过程的理解如下:
当session_start被调用时,PHP正在寻找来自客户端的参数通过了POST,GET,或在一个cookie发送(取决于配置;请参阅 session.use_cookies , session.use_only_cookies 和 session.use_trans_sid指定 )用的名称 session.name的 值,以使用已启动的会话的会话ID。
session_start
如果找到有效的会话ID,它将尝试从存储中检索会话数据(请参阅 session.save_handler )以将数据加载到中$_SESSION。如果找不到ID或禁止使用它,PHP将使用哈希函数(请参见 session.hash_function )对生成随机数据的源数据(请参见 session.entropy_file )生成一个新的ID 。
在运行时结束时或session_write_close调用时,会话中的数据$_SESSION将存储到指定的存储器中。
session_write_close