如何使用PHP插入延迟sql语句?

如何使用PHP插入延迟sql语句?,php,command,execute,Php,Command,Execute,我想为用户提供一个网站,当用户输入一些东西时,我会把它放到数据库中。但是当用户访问.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. 我怎样才能做到?此外,

我想为用户提供一个网站,当用户输入一些东西时,我会把它放到数据库中。但是当用户访问.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.

有什么想法吗?谢谢。

以下是完成此任务的工作流:

  • 当用户发出请求时,将请求记录到文件中
  • 创建一个cron作业来运行一个单独的PHP脚本,该脚本读取文件并将数据插入数据库
  • 如果用户取消请求,请从文件中删除该请求

  • 在“文件”的位置,您还可以将请求记录到“挂起”表中的数据库中,并执行类似的操作。

    以下是完成此操作的工作流:

  • 当用户发出请求时,将请求记录到文件中
  • 创建一个cron作业来运行一个单独的PHP脚本,该脚本读取文件并将数据插入数据库
  • 如果用户取消请求,请从文件中删除该请求

  • 在“文件”的位置,您还可以将请求记录到“挂起”表中的数据库中,并执行类似的操作。

    在不同的数据库表中安排作业。用户可以在此表中添加、修改和删除作业。然后让cronjob每隔五到十分钟检查一次表,并在当前时间执行作业。

    使用不同的数据库表安排作业。用户可以在此表中添加、修改和删除作业。然后每五到十分钟让一个cronjob检查一次表,并在当前时间执行作业。

    • 当用户输入时,将该输入保存在数据库表中,但设置列(已验证)值“0”
    • 一小时后,a将列(已验证)值设置为“1”
    • 如果用户在验证前取消,请删除该记录
    示例:

    用户输入

    user_id | input |    input_time     | verified
       1    |  500  | 2011-01-01 12:20  |    1
       2    |  700  | 2011-01-01 01:20  |    0
    
    user_id | input
       1    |  500 
       2    |  700 
    
    user_id  |  input  |    input_time
       3     |   200   | 2011-01-01 07:20   
    

    • 创建一个新表来存储输入请求
    • 一小时后,cron作业将把所有请求传输到原始表
    • 如果用户在一小时前取消,请从请求表中删除该记录
    示例:

    用户输入

    user_id | input |    input_time     | verified
       1    |  500  | 2011-01-01 12:20  |    1
       2    |  700  | 2011-01-01 01:20  |    0
    
    user_id | input
       1    |  500 
       2    |  700 
    
    user_id  |  input  |    input_time
       3     |   200   | 2011-01-01 07:20   
    
    用户请求

    user_id | input |    input_time     | verified
       1    |  500  | 2011-01-01 12:20  |    1
       2    |  700  | 2011-01-01 01:20  |    0
    
    user_id | input
       1    |  500 
       2    |  700 
    
    user_id  |  input  |    input_time
       3     |   200   | 2011-01-01 07:20   
    
    • 当用户输入时,将该输入保存在数据库表中,但设置列(已验证)值“0”
    • 一小时后,a将列(已验证)值设置为“1”
    • 如果用户在验证前取消,请删除该记录
    示例:

    用户输入

    user_id | input |    input_time     | verified
       1    |  500  | 2011-01-01 12:20  |    1
       2    |  700  | 2011-01-01 01:20  |    0
    
    user_id | input
       1    |  500 
       2    |  700 
    
    user_id  |  input  |    input_time
       3     |   200   | 2011-01-01 07:20   
    

    • 创建一个新表来存储输入请求
    • 一小时后,cron作业将把所有请求传输到原始表
    • 如果用户在一小时前取消,请从请求表中删除该记录
    示例:

    用户输入

    user_id | input |    input_time     | verified
       1    |  500  | 2011-01-01 12:20  |    1
       2    |  700  | 2011-01-01 01:20  |    0
    
    user_id | input
       1    |  500 
       2    |  700 
    
    user_id  |  input  |    input_time
       3     |   200   | 2011-01-01 07:20   
    
    用户请求

    user_id | input |    input_time     | verified
       1    |  500  | 2011-01-01 12:20  |    1
       2    |  700  | 2011-01-01 01:20  |    0
    
    user_id | input
       1    |  500 
       2    |  700 
    
    user_id  |  input  |    input_time
       3     |   200   | 2011-01-01 07:20   
    

    cron对此过于复杂。当您插入到数据库中时,有一列包含文章应该生效的日期和时间。例如:

    $query = "INSERT INTO table (body, effective_date) VALUES ('body text', '" . strtotime('+1 hour') . "'";
    

    在显示内容的页面中,只需添加
    WHERE effective\u date>=NOW()
    ,它将排除挂起的条目。

    cron对此过于复杂。当您插入到数据库中时,有一列包含文章应该生效的日期和时间。例如:

    $query = "INSERT INTO table (body, effective_date) VALUES ('body text', '" . strtotime('+1 hour') . "'";
    

    在显示内容的页面中,只需添加
    WHERE effective_date>=NOW()
    ,它将排除挂起的条目。

    如果您真的希望记录在一小时后输入数据库,您必须为条目创建某种队列,并设置脚本(通过Cron或其他)检查一小时前的记录并将其插入数据库。您尚未指定要使用的数据库,但据我所知,没有数据库可以让您选择执行插入命令,但告诉它在实际执行之前等待一小时

    如果使用队列,则在用户创建队列时,队列上可能有一个时间戳,并且在该时间戳之后的一小时内,用户可以取消记录


    您的队列可能也应该驻留在您的数据库中,并且实际上可能是数据最终要到达的实际表。只需使用时间戳查看是否已过一小时,并将记录标记为不再可取消(如果该单词存在…呵呵)。这意味着条目实际上是在一小时过去之前写入数据库的。但是,您只需根据创建后是否已过一个小时对操作进行筛选。

    如果您确实希望记录在一小时后输入数据库,则必须为您的输入创建某种类型的队列,并设置脚本(通过Cron或其他)检查一小时前的记录并将其插入数据库。您尚未指定要使用的数据库,但据我所知,没有数据库可以让您选择执行插入命令,但告诉它在实际执行之前等待一小时

    如果使用队列,则在用户创建队列时,队列上可能有一个时间戳,并且在该时间戳之后的一小时内,用户可以取消记录

    您的队列可能也应该驻留在您的数据库中,并且实际上可能是数据最终要到达的实际表。只需使用时间戳查看是否已过一小时,并将记录标记为不再可取消(如果该单词存在…呵呵)。这意味着条目实际上是在一小时过去之前写入数据库的。但是你只需要过滤你的操作就可以了