簡體   English   中英

PHP 雖然循環沒有中斷,但在調試器中工作?

[英]PHP While loop not breaking, but works in debugger?

有一個循環的簡單腳本。 當我單步執行代碼時,在調試器模式下工作正常。 但是,當它在沒有調試器的情況下運行時,它永遠不會結束/中斷。

只要我設定的時間就應該運行,然后跳出循環。 正如我所說,這在調試器中工作得非常好,但是當它沒有它運行時,它只是永遠循環,不管時間

任何建議為什么?

$time_start = microtime(true);
$n = 0;
while ( 1 ){
    $n++ ;
    echo $n;
    $time_end = microtime(true);
    $time = $time_end - $time_start;
    if($time > 1.5){
        break;
    }
}

我想使用 While,因為程序將用於偵聽套接字。 但如果滿足時間,需要確保時間結束

它可以工作,但 PHP 非常快。 所以你必須更加耐心,直到時間過去。 降低門檻。

也許您應該考慮改用hrtime

當您使用調試器時,時間仍在運行,因此到達下一步之前的延遲很快結束並滿足中斷條件。

$time_start = microtime(true);
$n = 0;
while ( 1 ){
    $n++ ;
    echo $n;
    $time_end = microtime(true);
    $time = $time_end - $time_start;
    echo " :: $time\n";
    if($time > 1.5){
        break;
    }
}

在稍微修改 output 后查看最后的結果。

1354524 :: 1.4999921321869
1354525 :: 1.4999930858612
1354526 :: 1.4999940395355
1354527 :: 1.4999949932098
1354528 :: 1.4999949932098
1354529 :: 1.4999961853027
1354530 :: 1.4999971389771
1354531 :: 1.4999980926514
1354532 :: 1.4999990463257
1354533 :: 1.4999990463257
1354534 :: 1.5
1354535 :: 1.5000011920929

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM