PHP会话\设置\保存\处理程序:先读后写()

PHP会话\设置\保存\处理程序:先读后写(),php,session,Php,Session,我正在尝试将所有会话数据保存到数据库中,让这个类处理所有这些数据,并使用会话设置保存处理程序进行设置。现在,我不知道这是否是因为我不完全理解该函数背后的全部思想,但我遇到的问题是在调用write()函数之前调用了会话处理程序类的read()函数。这不好的原因是read()试图在数据库中查找尚未写入数据库的信息,当然它会得到空结果 所以我决定阅读session\u set\u save\u处理程序后面的文档,看起来调用write()的唯一时间是会话终止或PHP关闭时。从我的角度来看,这似乎很没用。

我正在尝试将所有会话数据保存到数据库中,让这个类处理所有这些数据,并使用会话设置保存处理程序进行设置。现在,我不知道这是否是因为我不完全理解该函数背后的全部思想,但我遇到的问题是在调用write()函数之前调用了会话处理程序类的read()函数。这不好的原因是read()试图在数据库中查找尚未写入数据库的信息,当然它会得到空结果

所以我决定阅读session\u set\u save\u处理程序后面的文档,看起来调用write()的唯一时间是会话终止或PHP关闭时。从我的角度来看,这似乎很没用。。。为什么有人会在最后编写()或存储这些信息,然后才有机会检索这些信息

我试图做的是,当有人创建一个使用会话时,这些信息被写入数据库,每当我想检查身份验证或查找用户值时,我都想检索这些信息

我是不是做错了??我感谢任何澄清。如果有人需要任何代码来演示我要做的事情,我会更新这个

从我的角度来看,这似乎很没用。。。为什么有人会在最后编写()或存储这些信息,然后才有机会检索这些信息

在他们有机会找回它之前你是什么意思

要检索它,需要调用read方法,并且之前也调用了read方法,因此您已经拥有了该信息。但不知何故,这就是你所抱怨的


我假设您根本不太了解PHP的会话机制是如何工作的,对吗

在每个脚本的顶部调用session\u start。如果PHP在传递给脚本的参数中找到会话id,它将查找具有该id的现有会话,如果找到,它将从中读取数据。从那时起,您就可以使用这些数据了——PHP已经为您将其放入超级全局数组$\会话中。您可以从那里访问它,并且可以将新数据放入其中或更改现有数据

然后,当脚本结束或调用session_write_close时,数据被写回


当然,read函数是在write函数之前调用的。

是的,我对PHP的会话机制还是比较陌生,希望能澄清我的错误所在。我的意思是,在他们有机会检索之前,我在日志中注意到,我的read()函数正在寻找一个会话ID,直到最后才写入数据库。然而,我认为只有当有人试图登录时才调用session_start(),这是我出错的地方。