2011-12-16 113 views
1

如果存储在db中的时间戳与当前时间之间的差值为5分钟或更长时间,我希望脚本删除该行。PHP MySQL如果时间多于或超过5分钟,则存储时间

在DB已经连续2011/12/25 10:00
当前时间是2001年12月25日10:06

我希望它删除数据库行。

+2

这是非常广泛的。你在哪个部分挣扎?你能显示你现在需要查询数据库的代码吗? – 2011-12-16 00:49:00

+1

我认为你所寻找的是某种类型的cron工作。 – 1ftw1 2011-12-16 00:57:07

+0

@Russell你真的想要仔细检查你接受的答案。 – deceze 2011-12-16 01:33:40

回答

0

如果你在Linux中,你可以写一个chron job执行一个php(或几乎任何其他语言)的脚本来做到这一点。据我所知,一个数据库不会有这种内置的功能,你需要编写积极的功能。希望这可以帮助。

-3

试试这个,不寿测试:

$query = mysql_query("SELECT * FROM table"); 
$result = mysql_fetch_array($query); 

$id = $result['id']; 
$timestamp = strtotime($result['timestamp']); 
if($timestamp < time()-300){ 
mysql_query("DELETE FROM table WHERE id=".$id.""); 
} 
3

为什么cron的建议?您可以轻松地在每个页面视图上调用非常简单的删除语句。在成为瓶颈的时刻(然后我们讨论的是大量未改造的表格结构或非常繁忙的网站),查看查询速度如此缓慢的原因可能会变得适当。运行解释查询,应用一些索引,等等。如果问题仍然存在,可能会让游客等待太多工作,然后是cron的时间。

在那之前,只需在每个页面视图执行以下查询:

delete 
from 
    YourTable 
where 
    adddate(YourDateTimeColumn, interval 5 minute) < now() 
2

上面的代码稍有不妥。它应该是

delete 
from 
    YourTable 
where 
    adddate(YourDateTimeColumn, interval 5 minute) < now() 

有一分钟,它不应该在那里。