我想为用户提供一个网站,当用户输入某些东西时,我会把它放到DB中。但是当用户访问.php时,该命令不会执行。我想在一段时间后执行....这就是这样......
10:00 am
User makes the request, and saying that the record will write in the DB one hour later.
11:00 am
The request execute, and the DB write a new record.
我该怎么办?另外,我想添加一个用户取消请求的能力......这样的事情:
10:00 am
User makes the request, and saying that the record will write in the DB one hour later.
10:30 am
User cancels the request.
11:00 am
Nothing won't execute.
有什么想法吗?谢谢。
答案 0 :(得分:3)
示例:强>
表 user_input :
user_id | input | input_time | verified
1 | 500 | 2011-01-01 12:20 | 1
2 | 700 | 2011-01-01 01:20 | 0
示例:强>
表 user_input :
user_id | input
1 | 500
2 | 700
表 user_requests :
user_id | input | input_time
3 | 200 | 2011-01-01 07:20
答案 1 :(得分:3)
$query = "INSERT INTO table (body, effective_date) VALUES ('body text', '" . strtotime('+1 hour') . "'";
在显示您的内容的页面中,只需添加WHERE effective_date>=NOW()
,它就会排除待处理的条目。
答案 2 :(得分:1)
以下是完成此任务的工作流程:
在“文件”的位置,您还可以在“待处理”表中将请求记录到数据库,并执行类似的操作。
答案 3 :(得分:0)
使用不同的数据库表来安排作业。用户可以从此表中添加,修改和删除作业。然后让cronjob每隔五或十分钟检查一次表,并执行当前时间的作业。
答案 4 :(得分:0)
如果您真的希望在一小时之后将记录输入数据库,则必须为您的条目创建某种队列并设置脚本(通过 Cron 或其他)检查一小时的记录并将它们插入数据库。您尚未指定使用哪个数据库,但据我所知,没有数据库可以让您选择执行插入命令,但要告诉等待一小时实际上是这样做的。。
如果您使用队列,那么当用户创建队列时,您可以在其上设置时间戳,并且在该时间戳记的一小时内,用户可以取消该记录。
您的队列也应该驻留在您的数据库中,并且实际上可能是数据最终要进入的实际表。只需使用时间戳查看是否已经过了一个小时并将记录标记为不再< strong>可取消(如果该单词存在...呵呵)。这意味着该条目实际上已经过了一小时后写入数据库。但是你只需要过滤自创建以来是否已经过了一个小时的操作。