2014-09-19 69 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执行)执行会发生。在此期间,如果您想打印某些内容,您的浏览器将会被杀死。

相关问题