如何在指定时间后运行代码?

时间:2011-04-15 11:22:29

标签: php

我有一个大问题:

用户登录,会话打开。 之后,他点击一个按钮(在表单中),该动作是“example.php”。 此example.php应该将MySQL数据库中的一条记录增加1。

如何写这个“example.php”? 请帮忙。

编辑: 对不起,我没有问我应该问什么。

主要问题:

用户单击按钮后,example.php脚本应在指定时间后执行,例如600秒。

另一个问题是用户可以单击按钮并注销,尽管如此,example.php应该在600秒后执行。

编辑(18:48): 好的,我已经阅读了你的所有建议,但是不知道如何让所有这些东西一起工作。

我创建了一个form.php,输入类型=“submit”和action =“example.php”。 我想要:  1.启动一个javascript计时器;  2.在变量之前指定的时间之后增加数据库中的值。

如果有可能,请举个例子,告诉我如何做。

4 个答案:

答案 0 :(得分:2)

example.php执行SQL:

UPDATE table SET field = field + 1;

您需要更多信息吗?

编辑:

我认为没有像工作机制那样的其他方式。当用户调用example.php时,您将使用当前时间戳+ 600秒向数据库添加新作业。

并行应该运行一些作业执行程序,它将从数据库收集时间戳设置为timestamp <= NOW()的所有作业。

如果是某些记录,请调用指定的代码段并删除/标记作业。

答案 1 :(得分:0)

您可以使用sleep

延迟执行代码

示例:

<?php
    echo 'Script Start: '.date('h:i:s') . '<br>';
    sleep(5);  // delay in seconds (here 5)
    echo 'Script Ende: '.date('h:i:s') . '<br>';
?>

我不知道你想要做的事情是否合理,但你的exampl.php看起来像是:

<?php
    sleep(600);  // delay in seconds
    // the code to be executed delayed here
?>

答案 2 :(得分:0)

<?php
if( isset($_POST['submit_button']) ) {

    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

    $sql = 'UPDATE table SET counter_column = counter_column + 1'; // WHERE table_name_id =' . intval($id);
    mysql_query($sql, $link);
}
?>

这个 example.php 只会在点击submit_button时更新值,而不是只输入URL example.php

答案 3 :(得分:0)

你有几种方法可以做到这一点...... 如上所述,有睡眠方法。 您可以找到一份工作 - 即将某些内容添加到工作列表中并让cronjob经常检查它以查看它是否到期。 您可以使用javascript计时器在x秒后执行。