Php 在指定时间后删除Mysql行

Php 在指定时间后删除Mysql行,php,mysql,Php,Mysql,我正在尝试创建一个计算机预订系统,用户在其中选择一台计算机,并选择他将使用这台电脑的时间。在这段时间内,其他人无法预订这台电脑,我需要找到一个解决方案,如何在时间到期后自动删除包含预订电脑的所有行。谢谢您的建议。如果您的服务器是linux,您可以使用cron jobs每天检查一次每个预订日期。如果这些日期已过期。。修改后的字段保留可用。处理此问题的常用方法是在保留行上存储过期时间戳。然后,您要查找任何“开放”预订的查询将有其中的'expires\u at'=date_to”和“{$my_date

我正在尝试创建一个计算机预订系统,用户在其中选择一台计算机,并选择他将使用这台电脑的时间。在这段时间内,其他人无法预订这台电脑,我需要找到一个解决方案,如何在时间到期后自动删除包含预订电脑的所有行。谢谢您的建议。

如果您的服务器是linux,您可以使用cron jobs每天检查一次每个预订日期。如果这些日期已过期。。修改后的字段保留可用。

处理此问题的常用方法是在
保留
行上存储
过期时间戳。然后,您要查找任何“开放”预订的查询将有
其中的'expires\u at'
或类似内容。

通常我会这样做:

  • 存储预订时,将
    date\u from
    date\u to
    这两种数据类型
    DATETIME

  • 当检查是否对所有计算机进行了无需计算机的检查,并在解决方案中使用
    其中“{$my_date}>=date_to”和“{$my_date}”进行筛选以完成时,您需要运行一个CRON作业,该作业调用一个查询来删除具有保留时间+(15*60)
    我假设您有一个预订被放置或启动的时间,并且使用UNIX/Epoch时间戳

    如果您知道它将始终是一个固定的间隔(即15分钟),您可以执行以下操作:

    DELETE FROM reservations WHERE  reservation_time + (15 * 60) < unix_timestamp() 
    

    这是一个未经测试的答案,这可能只是一个建议,但我刚刚开始研究这些,所以我也对反馈感兴趣。我仍在努力解决各种可能性和缺点,但它可能很适合您的需要

    看看MySQL事件,一篇关于它的文章,以及官方语法。
    根据文章:

    事件类似于触发器。然而,与其磨合 响应数据更改时,事件可以调度为运行任意数量的事件 指特定时期内的时间。实际上,它只是一个数据库 cron作业


    考虑到这一点,我设想一个过程,删除任何超过1小时的内容(如果是过期的话)。该程序将在新插入时触发,以清除当时过期的任何内容,但在事件中也将每隔15分钟左右运行一次,这样触发器的自动删除就不会依赖于其他人添加预订来触发该程序。

    我为我们的酒店编写了预订系统,我也是这样做的,只使用日期而不是
    DATETIME
    ,因为我们不按小时销售房间。如果您想实际删除行,请使用一个事件调用包含
    从中删除的过程。。。其中…
    应该工作得很好。只要把活动安排得足够频繁就行了。另一方面,如果你像其他答案一样使用开始和结束时间,你会保留所有预订的记录。这取决于你需要什么。
    DELETE FROM reservations WHERE id = :id