我需要将正在运行的循环的continue
语句延迟一定数量的微秒。但是,我希望循环的其余部分运行,然后我只希望它停止运行并在时间结束时continue
,即使循环中的某些事情未完成。我知道这段代码不起作用,但这就是我所设想的:
for ($_x = 0; $_x < 10; $_x++){
usleep (1000){
continue;
}
// ... do other stuff here until timer is up
// when the timer runs out, continue to the next iteration
}
提前谢谢。
这就是你想要的。 我已经转换为睡眠 1 而不是 Usleep 以证明它有效,但如果你把它切换回来,它会完成你想要的。 不客气。
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
for ($_x = 1; $_x < 11; $_x++) {
$_m = microtime_float();
$_v = sleep(1);
$_n = microtime_float();
do{
//script here
echo "<hr></br>".$_m."</br>".$_n ."</br>" .$_x;
}
while($_v);
}
输出
1396497686.93541396497687.93561
1396497687.93571396497688.9363阿拉伯数字
1396497688.93641396497689.9373
1396497689.93711396497690.9381四
1396497690.93811396497691.93925
1396497691.93931396497692.93986
1396497692.93991396497693.94067
1396497693.94061396497694.94158
1396497694.94151396497695.94249
1396497695.94241396497696.942710
尝试 PHP 线程
调用 Thread 的 start 方法时,运行方法代码将在单独的 Thread 中异步执行。
听起来你想做这样的事情:
$time = time() + 1;
for($_x = 0; $_x < 10 && $time > time(); $_x++){}
或
$time = time() + 1;
for($_x = 0; $_x < 10; $_x++){
if($time > time()){
continue;
}
}
或者也许? 将if($time > time(){continue;}
添加到几个地方,例如
function too_long($time){
if($time > time()){
return TRUE;
}else{
return FALSE;
}
}
for($_x = 0; $_x < 10; $_x++){
$time = time() + 1;
//block of code
if(too_long($time)){
continue;
}
//block of code
if(too_long($time)){
continue;
}
...
}