【问题标题】:PHP MySQL if time is 5 minutes more or over then the stored timePHP MySQL 如果时间多于或超过存储时间 5 分钟
【发布时间】:2011-12-16 00:46:57
【问题描述】:

如果存储在数据库中的时间戳与当前时间之间的差异为 5 分钟或更长时间,我希望脚本删除该行。

示例

db 中的一行有 2011/12/25 10:00
当前时间是2001/12/25 10:06

我希望它删除 db 行。

【问题讨论】:

  • 这个范围很广。你在哪个部分苦苦挣扎?你能显示你当前必须查询数据库等的代码吗?
  • 我认为您正在寻找某种类型的 cron 工作。
  • @Russell 你真的很想仔细检查你接受的答案。

标签: php mysql date time


【解决方案1】:

为什么是 cron 建议?您可以在每个页面视图上轻松调用非常简单的删除语句。在成为瓶颈的那一刻(然后我们谈论的是一个大规模设计不足的表结构或一个非常繁忙的站点),看看为什么查询如此缓慢可能会变得合适。运行一个解释查询,应用一些索引,等等。如果问题仍然存在,可能是让访问者等待的工作量太大,然后是 cron 的时候了。

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

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

【讨论】:

    【解决方案2】:

    上面的代码有点错误。应该是

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

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

    【讨论】:

      【解决方案3】:

      如果你在 Linux 中,你可以编写一个 chron job 来执行一个执行此操作的 php(或几乎任何其他语言)脚本。据我所知,数据库不会内置这种功能,您需要编写代码来主动完成它。希望这会有所帮助。

      【讨论】:

      • Woops cron 哈哈,嗯,一直以为它是以Chronos 命名的,就像许多基于时间的东西一样,我的错误。想知道它是如何从未点击过的,我已经写了很多:S
      【解决方案4】:

      试试这个,没有测试过:

      $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."");
      }
      

      【讨论】:

      • 所有 条目从数据库中提取到 PHP 中,然后 可能 删除第一个条目? -1000
      • 好吧,假设一个测试用例只包含一个超过五分钟的项目并且该项目是第一个条目,它会起作用。
      猜你喜欢
      • 2018-07-03
      • 1970-01-01
      • 2016-10-09
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 2022-12-22
      • 2018-10-24
      相关资源
      最近更新 更多