Php SQL:如何在一段时间后删除一行

Php SQL:如何在一段时间后删除一行,php,sql,database,symfony,time,Php,Sql,Database,Symfony,Time,我有一个过程,它在SQL表中创建一行,其中包含日期和时间 我需要该行的有效期只有半小时,因此,如果进程在04:00创建一行,我需要该行在04:30自动删除 如何在SQL或PHP代码中实现这一点?我将创建一个PHP文件,在创建的日期/时间超过半小时之前的任何记录上运行delete语句 然后,您可以在cron上运行它,不管您觉得有必要多频繁 例如,如果可以随时创建条目,我会每隔一两分钟运行一次PHP脚本 如果只能每隔半小时(例如5.00、5.30)创建条目,则在XX:01和XX:31运行脚本可能就足

我有一个过程,它在SQL表中创建一行,其中包含日期和时间

我需要该行的有效期只有半小时,因此,如果进程在04:00创建一行,我需要该行在04:30自动删除


如何在SQL或PHP代码中实现这一点?

我将创建一个PHP文件,在创建的日期/时间超过半小时之前的任何记录上运行delete语句

然后,您可以在cron上运行它,不管您觉得有必要多频繁

例如,如果可以随时创建条目,我会每隔一两分钟运行一次PHP脚本

如果只能每隔半小时(例如5.00、5.30)创建条目,则在XX:01和XX:31运行脚本可能就足够了


运行脚本的时间取决于输入数据库条目的时间,以及在创建行后尽可能接近半小时删除行所需的准确性。

我将创建一个PHP文件,在创建日期/时间超过半小时的任何记录上运行delete语句

然后,您可以在cron上运行它,不管您觉得有必要多频繁

例如,如果可以随时创建条目,我会每隔一两分钟运行一次PHP脚本

如果只能每隔半小时(例如5.00、5.30)创建条目,则在XX:01和XX:31运行脚本可能就足够了


运行脚本的时间取决于可能输入数据库条目的时间,以及在创建后尽可能近半小时删除行所需的准确性。

一般来说,如果您有此类时间相关数据,则需要保存日期(当然)。如果只是想隐藏某些作业或类似作业的较旧行,只需创建一个数据库视图,该视图根据where条件隐藏行。(如果您可能需要证明自己做了某事,这也很有帮助。)

如果您不关心这个问题,只需添加datetime/timestamp字段,并创建一个cronjob,它使用上述查询的反向逻辑为您删除数据


如果您在自己实现时遇到问题,请将数据库模式添加到问题中并发表评论。

一般来说,如果您有此类与时间相关的数据,则需要保存日期(当然)。如果只是想隐藏某些作业或类似作业的较旧行,只需创建一个数据库视图,该视图根据where条件隐藏行。(如果您可能需要证明自己做了某事,这也很有帮助。)

如果您不关心这个问题,只需添加datetime/timestamp字段,并创建一个cronjob,它使用上述查询的反向逻辑为您删除数据


如果您在自己实现时遇到问题,请将数据库架构添加到问题中并发表评论。

我将在数据库本身上创建一个计划作业,该作业将清理30分钟以上的记录。

我将在数据库本身上创建一个计划作业,该作业将清理30分钟以上的记录分钟。

在表中添加列
date\u添加时间戳
列。插入行时会自动设置此值


然后编写一个PHP脚本,执行这个查询
DELETE FROM[mytable],其中UNIX\u TIMESTAMP(now())-UNIX\u TIMESTAMP(date\u added)>1800
。安排cron作业每隔一分钟左右运行一次

在表中添加列
date\u添加时间戳
列。插入行时会自动设置此值


然后编写一个PHP脚本,执行这个查询
DELETE FROM[mytable],其中UNIX\u TIMESTAMP(now())-UNIX\u TIMESTAMP(date\u added)>1800
。安排cron作业每隔一分钟左右运行一次

如果您有一个从该表中读取的进程,则使用一个基于该时间限制时段的子句


您可以运行另一个进程,将该行标记为禁用,以供考虑。就我个人而言,我不会删除此类数据,因为这样会丢失事件日志。

如果您有一个进程从该表中读取数据,那么请使用一个子句根据此时间限制时段


您可以运行一个额外的进程,将该行标记为禁用,以获取更多信息,就个人而言,我不会删除此类数据,因为这样会丢失事件日志。

您可以轻松地在库存过程中完成此操作,或者如果您想在php(symfony2)中完成此操作,您可以创建一个croned命令,每x分钟(或秒)启动一次验证每个过程

您可以很容易地在一个库存过程中实现这一点,或者如果您想在php(symfony2)中实现这一点,您可以创建一个croned命令,每x分钟(或秒)启动一次以验证每个过程

使用cron

从(控制台)SSH:
crontab-e

添加行:

0,30 * * * * php /path/to/script.php
在script.php中,编写代码查看>=30分钟的行并删除它们。

使用cron

从(控制台)SSH:
crontab-e

添加行:

0,30 * * * * php /path/to/script.php

在script.php中,编写代码查看>=30分钟的行并将其删除。

php不需要。在本任务中,您可以创建一个新的mysql数据库事件,该事件类型为
重复发生
,没有结束日期,您只需将

DELETE FROM `table` WHERE `expiryTime`-UNIX_TIMESTAMP() < 1
DELETE FROM`table`WHERE`expiryTime`-UNIX\u TIMESTAMP()<1

由于保存日期的方法不同,比较表达式可能会有所不同。在这种情况下,
expiryTime
字段将作为
unix时间戳
保存到到期时间。

php不是必需的在这个任务中,您可以创建一个新的mysql数据库事件,类型为
recurrency
,没有结束日期,您只需将

DELETE FROM `table` WHERE `expiryTime`-UNIX_TIMESTAMP() < 1
DELETE FROM`table`WHERE`expiryTime`-UNIX\u TIMESTAMP()<1
由于保存日期的方法不同,比较表达式可能会有所不同。在这种情况下,字段
expiryTime
将另存为