2012-08-01 256 views
-4

我有一个cron作业,我需要运行每分钟来检查一个数据库表。该表由两个字段(用户名,持续时间)组成。 lastping是一个mysql datetime对象,由另一个脚本使用mysql NOW()函数设置。我需要检查最后更新后是否已经过了一分钟,如果它在最后一分钟没有更新,我想删除包含该用户名和持续的行。我想我可以检查使用像这样的SQL语句。MySQL选择并删除行

FROM client WHERE lastping < NOW() - INTERVAL 1 MINUTE; 

我的问题是,我如何格式化select语句来检查整个表并删除记录,如果它已超过一分钟。

我将每15-30秒更新一次仍然连接用户的数据库。这样做的目的是为了让我能够在那一刻或至少在过去的60秒内看到哪些最终用户正在使用我的C++应用程序,因此我可以保留统计数据。

这是我到目前为止所做的,输出是删除非活动用户,但实际上并没有发生。

mysql_connect(SERVER, USERNAME, PASSWORD); 
mysql_select_db(DATABASE); 
$query="DELETE (username, lastping) from client where lastping < NOW() - INTERVAL 1 MINUTE"; 
mysql_query($query) or die ('Error updating database'); 
echo "Deleted inactive users"; 
+0

您需要研究如何删除具有条件的行。它在MySQL手册中。 [有时阅读](http://dev.mysql.com/doc/refman/5.0/en/delete.html)。 – Matt 2012-08-01 18:11:05

+0

你不想要“小于”吗? '在哪里持续 Wiseguy 2012-08-01 18:11:09

+0

'从客户端删除> NOW() - INTERVAL 1 MINUTE'?答案几乎是在这个问题上。或者我误解了你想达到的目标 – 2012-08-01 18:11:38

回答