Php 通过会话id检查会话的状态

Php 通过会话id检查会话的状态,php,session,Php,Session,我看过一些标题类似的帖子,但它们似乎并不是我想要达到的目标 我正在构建一个购物车,用户可以通过使用$\u SESSION和SESSION\u id() 将项目添加到购物车将条目添加到具有会话id的购物车表中 长话短说,我如何从会话ID列表中找出哪些会话处于活动状态,哪些会话不处于活动状态(用于crontab),以便我可以从数据库中的购物车表中删除冗余项?如果您有足够的权限,可以使用。(适用于PHP>5.4.0) 然后在代码中: ini_set('session.save_handler', 'f

我看过一些标题类似的帖子,但它们似乎并不是我想要达到的目标

我正在构建一个购物车,用户可以通过使用
$\u SESSION
SESSION\u id()

将项目添加到购物车将条目添加到具有会话id的购物车表中


长话短说,我如何从会话ID列表中找出哪些会话处于活动状态,哪些会话不处于活动状态(用于crontab),以便我可以从数据库中的购物车表中删除冗余项?

如果您有足够的权限,可以使用。(适用于PHP>5.4.0)

然后在代码中:

ini_set('session.save_handler', 'files');
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
在使用之前,我建议您彻底阅读我上面链接的文档



但是,由于您正在构建购物车,因此只需将购物车信息存储在会话变量中就更容易了。

u希望会话中同时包含活动和非活动?从技术上讲,我只需要知道哪些是非活动的,这样我就可以将其从数据库中删除。我不确定您是否可以在PHP中获得活动/过期会话的列表。但这就是您可以做的:一旦一个购物车被初始化,将会话id存储在一个带有时间戳的表中(我想您已经这样做了)(我想您还没有这样做)。每当用户加载页面时,都会更新时间戳(如果用户在页面上花费大量时间,则可以发送ajax调用以定期刷新会话)。为旧会话定义阈值(例如2小时),然后从数据库中删除早于此阈值的会话(可能使用cron作业)。让我知道这是否有效。为什么不保存所有项目的状态?或者,您不必在数据库中存储购物车项目。将购物车项目存储在会话变量中。问题解决了。当会话结束时,垃圾收集器将自动清理内存。而且它还节省了访问数据库的时间。嗯,有趣的是,我有完全的服务器访问权限,所以我会试试看。我不想只使用会话的唯一原因是,我希望成员能够重新登录到他们的帐户,并且仍然拥有他们在购物车中选择的项目。@thePav:如果您将其存储在DB或会话变量中,无论哪种方式,您都必须使您的会话不会过期很长时间。对于非成员,购物车将基于会话(基于时间的到期时间约为2小时的非活动),对于成员,购物车将不会到期,因为数据将在附加到其用户id的数据库中(因此登录的成员不需要购物车会话)。
ini_set('session.save_handler', 'files');
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();