2014-09-19 68 views
0

我正在創建一個簡單的腳本來測試我可以在60秒內回顯我的while循環,但問題是它不會在我的循環內回顯。我不知道它是否真的在我的while循環中執行。然後我的瀏覽器會崩潰。在60秒之前執行腳本

$timelimit = 60; //seconds 
set_time_limit($timelimit); 
$start_time = time(); //set startup time; 



while(((time() - $start_time) < $timelimit) || !$timelimit){ 
    echo "executing..<br/>"; 
} 

在此先感謝您。

+0

你的問題很不清楚。我不知道你在問什麼 – 2014-09-19 03:05:03

+0

如果你的瀏覽器在加載頁面時崩潰了,我會認爲它可能是由服務器接收到數百萬行「執行」而被超載。一個'echo'語句需要**非常少的時間。您應該在循環中添加'usleep(100000);'(睡眠100000微秒/ 100毫秒)以限制執行。 – Lukas 2014-09-19 03:08:27

+0

@盧卡斯,謝謝 – kelly123 2014-09-19 03:40:17

回答

1

這是一個非常緊密的循環。它將運行速度非常快,並會創建一個非常大的輸出,最終會終止瀏覽器(它將擁有數十萬行)。你可能有些延遲添加到您的循環:

while(((time() - $start_time) < $timelimit) || !$timelimit){ 
    sleep(1); // pause for 1 second 
    echo "executing..<br/>"; 
} 

在這種情況下,輸出將只有60行,以及瀏覽器應該等待一分鐘後,呈現它。

0

如果您希望在腳本生成時看到輸出,那麼您需要在回顯後添加flush();。但是,如果我沒有記錯,php仍然會等待發送輸出,直到它有一定數量的字節(1024可能?)。

1

CPU執行是第一次(每次執行約爲10^-9s)。您的循環時間爲60 seconds。所以考慮有多少(可能是300915626執行)執行會發生。在此期間,如果您想打印某些內容,您的瀏覽器將會被殺死。

相關問題