1 小时后删除临时视图


Delete temporary views after 1 hour

我有一个表temp_views它应该根据用户的IP存储视图。如果视图是 1 小时前的,我想将其从表中删除。

// Update views
$stmt = $db->prepare("SELECT COUNT(*) FROM temp_views WHERE v_postid=? AND v_ip=?");
$stmt->bind_param("is",$pid,$ip);
$stmt->execute();
$stmt->bind_result($temp_view);
$stmt->fetch();
$stmt->close();
if ($temp_view == 0){
  // Insert a temporary view for 1 hr
  $stmt = $db->prepare("INSERT INTO temp_views (v_ip,v_postid) VALUES (?,?)");
  $stmt->bind_param("si",$ip,$pid);
  $stmt->execute();
  $stmt->close();
  // Add view to post
  $stmt = $db->prepare("UPDATE posts SET p_views=p_views+1 WHERE p_id=?");
  $stmt->bind_param("i",$pid);
  $stmt->execute();
  $stmt->close();
}

我该怎么做?

表格temp_views中引入新的时间戳字段createdTime。这样您就可以设置一个 cron 作业,该作业将执行删除查询,该查询将删除一小时前的记录。

在时间戳的情况下,请使用

 DELETE FROM `temp_views` WHERE createdTime < (UNIX_TIMESTAMP() - 3600);

如果是日期时间字段,请使用下面的字段

 DELETE FROM `temp_views` WHERE `createdTime` < ADDDATE(NOW(), INTERVAL -1HOUR);