如何在1分钟后运行PHP函数?

时间:2014-01-29 08:03:41

标签: php mysql time

我在Windows Server上有MySQL服务。我在PHP中有一个脚本,当用户运行它时,它应该停止MySQL服务,然后在60秒后它必须再次启动服务。我写了一些像这样的代码:

$stopTime = time();
$now = date("H:i", time());
$mustRun = date("H:i", intval($stopTime)+60);

while(trim(strval($now)) !== trim(strval($mustRun))) {
    continue;
} // now it should be start mysql service

我将运行时间保存在$stopTime变量中,并在使用$mustRun变量后计算了60秒。 我希望在当前时间为$mustRun时启动服务,我该怎么做?

5 个答案:

答案 0 :(得分:1)

也许你可以试试php的sleep

<?php

// sleep for 60 seconds
sleep(60);

?>

答案 1 :(得分:1)

将'sleep'与 outputbuffering 结合使用。 类似的东西:

<?php
ob_start();
$buffer = str_repeat(" ", 4096);

for ($i=0; $i<10; $i++) {
  echo $buffer.$i;
  ob_flush();
  flush();
  sleep(60);
}
ob_end_flush();
?>

不使用 outputbuttering ,'sleep'不会按预期显示行为。

答案 2 :(得分:1)

您也可以在服务器中使用cronjob

此方法更可靠,因为在某些情况下可能是由于网络服务器的安全设置,您的代码无法正常工作

查看此链接

http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

答案 3 :(得分:0)

使用'sleep()'或'usleep()'方法而不是while循环,传入您想要暂停的时间。

答案 4 :(得分:0)

您也可以尝试使用在指定时间后调用的回调

的此函数
function delay_exec($function_name,$param,$delay) {
    $ret = null;
    if (!is_int($delay) || !is_function($function_name)) {
        echo "<h2>Errore </h2>"
        return $ret;
    }
    sleep($delay);
    $ret = call_user_func_array($function_name,$param);
    return $ret;
}

所以如果你有foo($a,$b)来打电话,你可以这样打电话:

  

delay_exec( '富',阵列($一个,$ b)中,60);