我正在尝试让脚本等待3秒再继续执行。问题在于睡眠功能首先运行并睡眠3秒钟,然后两个循环都运行。
if ($resultCheck > 0) {
while ($row = mysqli_fetch_all($result)) {
for ($i=0; $i < 3; $i++) {
echo $row[$i][0];
}
sleep(3);
$values = sizeof($row);
for ($i=3; $i < $values; $i++) {
echo $row[$i][0];
}
}
}
答案 0 :(得分:1)
在每个回显之后添加以下行: flush(); 。它将使输出立即显示。
您的代码正确,但是脚本结束后将显示输出。要立即显示输出,需要使用flush()函数刷新输出缓冲区。
替换行:
echo $row[$i][0];
与
echo $row[$i][0];
flush();
可能还有更多的输出缓冲层正在导致输出延迟。参见How to disable output buffering in PHP。如果无法使用冲洗,则可以将ob_flush与冲洗一起使用。
答案 1 :(得分:1)
您的代码正在运行,但是为了使您的输出显示出来,您应该像这样冲洗输出缓冲区:
if ($resultCheck > 0) {
while ($row = mysqli_fetch_all($result)) {
for ($i=0; $i < 3; $i++) {
echo $row[$i][0];
ob_flush();
flush();
}
sleep(3);
$values = sizeof($row);
for ($i=3; $i < $values; $i++) {
echo $row[$i][0];
}
}
}
如果您的文本未超过一定长度,则可能仍无法刷新。如果上面的代码不起作用,我们可以使用str_pad($text,4096);
将文本加长到4kb:
if ($resultCheck > 0) {
while ($row = mysqli_fetch_all($result)) {
for ($i=0; $i < 3; $i++) {
echo str_pad( $row[$i][0], 4096);
ob_flush();
flush();
}
sleep(3);
$values = sizeof($row);
for ($i=3; $i < $values; $i++) {
echo $row[$i][0];
}
}
}
答案 2 :(得分:0)
您必须先初始化sleep()
,然后才能执行其他操作
if ($resultCheck > 0) {
while ($row = mysqli_fetch_all($result)) {
sleep(3);
for ($i=0; $i < 3; $i++) {
echo $row[$i][0];
}
$values = sizeof($row);
for ($i=3; $i < $values; $i++) {
echo $row[$i][0];
}
}
}