php+mysql 如何实现 30分钟后删除一条记录

niko酱 发布于 2012/06/21 22:39
阅读 1K+
收藏 1

    我的目的是想要实现这么个功能:

用户绑定手机=>先随机生成一个数字校验码,存入mysql中 有效期为30分钟=>30分钟后将这条记录删除 或者 update成null

加载中
1
ClownFish
ClownFish

你可以建立一个字段。设置为失效时间。

当你发送的时候把这个失效时间设置为time()+1800

做验证的时候对比一下失效时间。如果失效了。就把这条记录删除。

也可以,在每个用户做验证的时候。删除一次已失效的记录。

1
悟庭
悟庭

这玩意靠php是行不通的。得靠mysql,mysql5.1以后就支持计划任务了。

create event every30_del on every 30 minute do delete from table1 where id='xxx';

自己去看吧http://dev.mysql.com/doc/refman/5.1/en/create-event.html

当然了schedule功能要自己开启。

SET GLOBAL event_scheduler = ON;

如果你的mysql服务商禁止了这个功能,那就只有去哭了

三_三
三_三
那么php怎么用mysql的event呢?
0
夕拾贰
夕拾贰

PHP不熟,不知道PHP里有没有类似任务的东西。。

而且没必要删吧?把有效期设上就行了么?莫不是你有洁癖??

0
Liuxd
Liuxd
这种时候建议使用memcached.
0
xyz555
xyz555
不可以实际实时删除,但可以逻辑上的实时删除。
0
LeeNux
LeeNux
如果只是为了超时失效完全可以存个时间戳,使用检验码的时候比对时间戳
0
ValueError
ValueError

思路大概就是主动和被动两种。主动就用 crond 注册计划任务删除,或者像  @WaiTing  所说使用数据库的特性;被动方式实现起来就更简单,在数据读取的地方(table gateway 啊之类的)检查一次时间戳,过期则执行删除,对外表现为数据不存在。

返回顶部
顶部