当前的MYSQL
DELETE FROM `sessions` WHERE `expires` < UNIX_TIMESTAMP();
我不确定如何让它做我想做的事。我正在考虑使用php并执行unixtime-1800然后在MySQL中使用它,这对我的应用程序来说没问题。不确定你是否可以在MySQL中完成这一切,因为我只是想知道。
PHP我曾经是这样的事情
<?Php
$time = time() - 1800;
mysql_query("DELETE FROM `sessions` WHERE `expires` < $time;")
?>
答案 0 :(得分:1)
只需减去你想要的秒数
DELETE FROM `sessions` WHERE `expires` < (UNIX_TIMESTAMP() - 1800);
您计划多久运行一次此查询?
答案 1 :(得分:1)
您可以这样做:
DELETE FROM `sessions` WHERE `expires` < (UNIX_TIMESTAMP() - 1800);
答案 2 :(得分:0)
这种方法会在高负载系统上造成巨大的性能下降。第一个提议是每半小时创建一个新表,并按一些逻辑刷新旧表。
编辑:好的,也许不是半小时GC的大幅降级,但一般来说这是一个糟糕的设计。