我有一个不活跃的系统。它应该在15分钟后从非活动表中删除用户。 我还有一个代码,如果在该表中找不到该用户,则将该用户记录下来。 非活动脚本会在每次刷新页面时更新用户。
这是我尝试的非活动代码,到目前为止无效:
$result = mysqli_query($con,"SELECT * FROM inactive");
while($row = mysqli_fetch_array($result))
if ($row['inactive'] > timestampadd(MINUTE, -15, now()))
{
}else {
$db_query = "DELETE FROM inactive WHERE username='$username'";
$result = mysql_query($db_query);
}
答案 0 :(得分:7)
CREATE EVENT IF NOT EXISTS `remove_inactives`
ON SCHEDULE EVERY 15 MINUTE
ON COMPLETION PRESERVE
ENABLE
DO
DELETE FROM `inactive`
WHERE `timestamp` < DATE_SUB(NOW(), INTERVAL 15 MINUTE)
;
^使用一组并忘记定期MySQL Event。 让服务器为您完成工作:)
对于PHP:
mysqli_query($connection, // or mysql_query(
<<<SQL
CREATE EVENT IF NOT EXISTS `remove_inactives`
ON SCHEDULE EVERY 15 MINUTE
ON COMPLETION PRESERVE
ENABLE
DO
DELETE FROM `inactive`
WHERE `timestamp` < DATE_SUB(NOW(), INTERVAL 15 MINUTE)
;
SQL;
); // ends *_query() call
您只需要运行此一次即可在服务器上安装!
答案 1 :(得分:1)
如果您有时间戳字段,则只需执行一次查询,而不必迭代选择的结果集:
DELETE FROM inactive
WHERE timestamp < DATE_SUB(NOW(), INTERVAL 15 MINUTE)
您可以在cron或页面上执行该查询。