【问题标题】:Move Row from One MySQL Table to Other after 30 Minutes30 分钟后将行从一个 MySQL 表移动到另一个
【发布时间】:2015-12-24 01:36:39
【问题描述】:
我确实已经研究了一段时间,但还没有想出最好的方法。
我有一个 MySQL dB。我需要一种在行进入第一个表 30 分钟后自动将一个表中的行移动到另一个表的方法。
我知道 schedule_events 是最好的方法,但我不确定 GoDaddy 是否支持它,因为它是共享主机。 (请记住,他们显然也不知道)
还有其他选择吗?我承认没有代码可以分享。
【问题讨论】:
标签:
php
mysql
events
scheduled-tasks
【解决方案1】:
- 在数据库中创建一个名为 whentomove 的列,插入时带有 current_timestamp
- 创建一个脚本,检查与当前
time() 相差 1800 秒(也称为 30 分钟)的行并移动它们。
- 为该文件 following these instructions 创建一个每分钟或更短时间运行一次的 cronjob。
#1
因此,基本上对于#1,您可以在数据库中添加 whentomove 列之后执行以下操作:
$time = time();
mysqli_query($connection, "INSERT INTO oldtable (....,whentomove) VALUES (....., $time)");
或者通过PHPmyadmin设置whentomove到CURRENT_TIMESTAMP字段的默认值
#2
<?php
//Database connection stuff
$time = time() - 1800;
mysqli_query($connection, "INSERT INTO newtable SELECT * FROM oldtable WHERE whentomove < $time");
mysqli_query($connection, "DELETE FROM oldtable WHERE whentomove < $time");
?>
#3
按照这些说明将第二个脚本作为 cron 运行。祝你好运!