我在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
时启动服务,我该怎么做?
答案 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);