会话过期时对象是否被销毁?

Does object get destroyed when session expires?

在我的 PHP 应用程序中,我定义了一个 User_class (具有一些属性和一些方法,包括 __construct()__destruct() )。我从这个 class 实例化了一个对象,为了使用它的凭据,我使用序列化方法将这个对象存储在 $_SESSION 超级全局中。 _destruct() 方法运行一些私有方法,包括 log_out 。 我的问题是,会话过期是否会破坏对象?

明确的回答:不,不是。

该对象作为字符串存储在会话中,代表所有属性的当前值,但不代表(!)任何方法、构造函数或析构函数。

当会话过期并且垃圾收集处于活动状态时,会话存储中剩余的会话将被删除。

为了在会话过期后显式注销用户,您需要注册自己的会话处理程序。

顺便说一句:为了在 $_SESSION var 中存储一个对象,没有必要明确地序列化它。只需 $_SESSION['obj'] = $myObj; 就足够了 - 并且可以极大地加快速度。