在 php 中使用循环和睡眠方法构建倒计时
Build a countdown using a loop and sleep method in php
我正在尝试 PHP 使用 sleep() 方法在执行暂停一秒后打印出序列号,但随后代码暂停执行该持续时间,然后瞬间执行循环.
我所期待的
我原以为对于该循环中的每次迭代,它都会打印出一个数字,然后调用 sleep()
这会将代码延迟一秒钟,然后打印出下一个数字,然后延迟等等等等..
正在使用代码
<?php
$myarr=array(1,2,3,4,5,6,7,8,9,10);
foreach($myarr as $p){
//print out a number and then pause for a sec
echo "$p <br/>";
sleep(1);
/*the line above instead makes the thread sleep for one second and then prints the rest of the numbers in a flash instead of printing a single number and pausing and so on and so forth*/
}
?>
您可以通过在睡眠前刷新输出来实现它
代码将是:
<?php
$myarr=array(1,2,3,4,5,6,7,8,9,10);
foreach($myarr as $p){
//print out a number and then pause for two seconds
ob_start();
echo "$p <br/>";
$size = ob_get_length();
ob_end_flush();
@ob_flush();
flush();
sleep(2);
}
?>
基本上 PHP 确实完全按照您的意愿行事...只是不在浏览器上...
一种方法是通过 ob_flush :
<?php
if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<10; $i++){
echo "<br>" . $i;
echo str_pad('',4096)."\n";
ob_flush();
flush();
sleep(2);
}
echo "Done.";
ob_end_flush();
?>
这将每 2 秒打印一个数字......但是它是呃......它的功能并不是最好的......至少前 4-5 秒 - 这意味着 0,1,也许 2 是当我们开始看到睡眠时已经打印出来了。
我正在尝试 PHP 使用 sleep() 方法在执行暂停一秒后打印出序列号,但随后代码暂停执行该持续时间,然后瞬间执行循环.
我所期待的
我原以为对于该循环中的每次迭代,它都会打印出一个数字,然后调用 sleep()
这会将代码延迟一秒钟,然后打印出下一个数字,然后延迟等等等等..
正在使用代码
<?php
$myarr=array(1,2,3,4,5,6,7,8,9,10);
foreach($myarr as $p){
//print out a number and then pause for a sec
echo "$p <br/>";
sleep(1);
/*the line above instead makes the thread sleep for one second and then prints the rest of the numbers in a flash instead of printing a single number and pausing and so on and so forth*/
}
?>
您可以通过在睡眠前刷新输出来实现它
代码将是:
<?php
$myarr=array(1,2,3,4,5,6,7,8,9,10);
foreach($myarr as $p){
//print out a number and then pause for two seconds
ob_start();
echo "$p <br/>";
$size = ob_get_length();
ob_end_flush();
@ob_flush();
flush();
sleep(2);
}
?>
基本上 PHP 确实完全按照您的意愿行事...只是不在浏览器上... 一种方法是通过 ob_flush :
<?php
if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<10; $i++){
echo "<br>" . $i;
echo str_pad('',4096)."\n";
ob_flush();
flush();
sleep(2);
}
echo "Done.";
ob_end_flush();
?>
这将每 2 秒打印一个数字......但是它是呃......它的功能并不是最好的......至少前 4-5 秒 - 这意味着 0,1,也许 2 是当我们开始看到睡眠时已经打印出来了。