【问题标题】:How to erase data from table automatically?如何自动从表中删除数据?
【发布时间】:2012-05-25 06:15:51
【问题描述】:

我有一张桌子

它有四个字段:Phone_number(primary key),City_name,Category_product and sub_Category

我正在开发一个基于短信网关的 php 应用程序。 每当用户发送和发送短信请求产品服务时, 他的详细信息将保存在此表中。

现在当用户发送短信时,我会将详细信息存储在表格中,并且 等待用户根据需要发回包含更多详细信息的短信。

现在我想做的是: 如果用户在 15 分钟内没有回复,他的详细信息应自动从表中删除。 我该怎么办?

【问题讨论】:

  • 不是删除条目,而是包含一个新列 (datetime) 并存储日期时间值,然后进行比较?

标签: mysql phpmyadmin xampp


【解决方案1】:

您在表中添加一列来存储发送时间。

然后你必须选择,你可以运行 cron 作业来清理数据,或者你清理其他用户发送短信时无效的记录等。由于你将时间与数据一起存储,你可以也可以轻松更改 15 分钟后的超时时间。

【讨论】:

  • 如何设置超时条件?我不想运行 cron 作业。我应该在创建记录时加上时间戳吗?然后再比较一下?
  • 确切地说,您将存储一个时间戳并稍后进行比较(例如 time()-$time_sent > 900),如果它返回 true,则记录早于 15 分钟。
  • 为此我必须在服务器上连续运行一个 php 脚本?如果假设我有大量记录,那将需要很多时间
  • 不,不一定。例如,您可以在每次发送另一条 SMS 时运行该脚本。如果您的服务器负载很高,您可能需要使用垃圾收集系统。
  • 你可以使用类似这样的东西:if ((time() - $time_sent) >= 900) { deleteOldRecords(); }
【解决方案2】:

您必须使用一些日程安排。 PHP 对调度没有任何原生支持。我的建议是创建一个桌面应用程序或一个服务来监听表以获取 SMS 响应。如果它没有得到响应,那么它将删除相应的记录。您的作业将无限运行。

【讨论】:

    【解决方案3】:

    如果这将是一个包含许多记录的表,您应该设置一个预购表,然后在下订单时将记录复制过来。这样,如果预购表开始变慢,您可以随时清理。

    正如 Ben 所说,它应该有一个用于检查的时间戳。

    【讨论】:

      猜你喜欢
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 2019-03-18
      • 1970-01-01
      • 2019-08-23
      • 2017-10-30
      相关资源
      最近更新 更多