for loop - PHP sleep() 用于特定的代码块



我需要将正在运行的循环的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;
    }
    ...
}

相关内容

  • 没有找到相关文章

最新更新