在 PHP 中有没有与 JavaScript 中设置超时的等价功能?
在 JavaScript 中,可以使用setTimeout函数在一定时间后执行代码。
在 PHP 中是否也可以实现类似功能呢?
在 PHP 中有没有与 JavaScript 中设置超时的等价功能?
在 JavaScript 中,可以使用setTimeout函数在一定时间后执行代码。
在 PHP 中是否也可以实现类似功能呢?
PHP是单线程的,通常情况下PHP专注于HTTP请求周期,因此在请求完成后允许超时运行代码可能会很棘手。
我建议您研究Gearman作为将工作委派给其他PHP进程的解决方案。
sleep()
函数:int sleep ( int $seconds )
// Delays the program execution for the given number of seconds.
例子:
public function sleep(){
sleep(1);
return 'slept for 1 second';
}
<?php
declare(ticks=1);
function setInterval($callback, $ms, $max = 0)
{
$last = microtime(true);
$seconds = $ms / 1000;
register_tick_function(function() use (&$last, $callback, $seconds, $max)
{
static $busy = false;
static $n = 0;
if ($busy) return;
$busy = true;
$now = microtime(true);
while ($now - $last > $seconds)
{
if ($max && $n == $max) break;
++$n;
$last += $seconds;
$callback();
}
$busy = false;
});
}
function setTimeout($callback, $ms)
{
setInterval($callback, $ms, 1);
}
// user code:
setInterval(function() {
echo microtime(true), "\n";
}, 100); // every 10th of a second
while (true) usleep(1);
sleep(10)
,则在睡眠结束后,您将批量执行100次tick函数。setInterval
有一个额外的参数来限制它被调用的次数。setTimeout
只调用一次setInterval
。unregister_tick_function
,但我不确定除非有一个主tick函数来监视和注销它们,否则是否可能实现这一点。如果不知道您的问题用例,很难回答:
如果 ($currenturl != $urlto) exit( wp_redirect( $urlto ) );
您可以将上面的两行代码替换为以下代码,放入您的函数中:
如果 ($currenturl != $urlto)
header( "refresh:10;url=$urlto" );