Php 登录系统在数据库中存储会话

Php 登录系统在数据库中存储会话,php,session,login,Php,Session,Login,我在做什么? 我正在为我自己的网站开发一个登录系统,当人们登录时,会生成一个会话令牌,并使用PHP会话保存。 生成的session_令牌还将与登录用户的id和session_expire datetime一起插入到数据库表中 每次用户返回我的网站时,它都会在会话数据库表中检查会话\令牌是否存在且未过期 问题 如何防止会话表中充满过期的会话\u令牌?我不想每x分钟运行一次cron_作业来删除过期的会话。如果不使用cron作业,您可以使用,或者当您去检查令牌是否过期时,如果它已经过期,您可以删除它。

我在做什么?

我正在为我自己的网站开发一个登录系统,当人们登录时,会生成一个会话令牌,并使用PHP会话保存。 生成的session_令牌还将与登录用户的id和session_expire datetime一起插入到数据库表中

每次用户返回我的网站时,它都会在会话数据库表中检查会话\令牌是否存在且未过期

问题


如何防止会话表中充满过期的会话\u令牌?我不想每x分钟运行一次cron_作业来删除过期的会话。

如果不使用cron作业,您可以使用,或者当您去检查令牌是否过期时,如果它已经过期,您可以删除它。

您的意思是每次检查任何会话时,执行查询以删除过期会话?因为您不想使用cron作业,所以这可能是最好的方法。无论何时检查电流是否有效,请检查是否有任何其他电流已过期。但是,如果此操作经常运行,您会发现它可能会使您的脚本速度减慢,而不是每X分钟/秒使用一次cron作业。感谢您的答复,我将进一步查找任何选项,但您回答了我的部分问题。在数据库表中使用户的
id
成为
唯一键。然后,当
session\u令牌
过期并且您创建了一个新的
session\u令牌
时,您将更新该用户的行。那么,每个用户只能有一行。我的目的是每个用户有多个会话,因为我的帐户一次被超过一个人使用。您是希望完全避免使用cron,还是担心它经常运行?这张桌子多快就满了?似乎每隔几分钟就有可能过度消耗用于此目的的cron作业的频率。作为一个选项,使用本身执行逐出和/或将TTL作为参数的存储(memcache[d],redis)