for ($i=1; $i<=4; $i++) {
echo $i ;
}
sleep(2) ;
for ($i=5; $i<=10; $i++) {
echo $i ;
}
我希望首先打印1到4而不是等待2秒而不是打印5到10.这正在online php editor上工作但是当我尝试窗口(xampp)时它比直接显示1到10。
答案 0 :(得分:4)
我认为在线PHP
正在运行它,就像它在shell中运行一样,所以你可以在代码运行时看到输出。
在您的Xampp虚拟机上,Apache正在等待PHP
脚本完全运行,然后再将其提供给您的浏览器,因此看起来sleep()
命令似乎没有做任何事情。
在命令行界面中运行您的脚本,您将看到您的期望。
答案 1 :(得分:0)
您必须了解PHP命令行和HTTP请求之间的区别。
如果执行php命令行,它将以逼真的方式提供输出。
your_root_folder$ php your_script.php
但是如果你通过HTTP请求执行php脚本,那么Apache正在等待整个脚本的完整执行,然后将输出提供给客户端。
http://localhost/your_script.php
根据您的问题,在线PHP编辑器将您编写的代码发布到他们的PHP服务器,在完成执行服务器将为您提供输出后,在他们的服务器中执行您的代码。
答案 2 :(得分:0)
添加到现有的答案,如果您需要立即输出到浏览器,您可以使用ob_end_flush()和flush(),即:
for ($i=1; $i<=4; $i++) {
echo $i ;
}
ob_end_flush();
flush();
sleep(2) ;
for ($i=5; $i<=10; $i++) {
echo $i ;
}
答案 3 :(得分:0)
您调用服务器,运行php脚本以及何时运行 这已完全完成,结果将返回给您的浏览器。
你可以尝试睡觉。
<?php
header( 'Content-type: text/html; charset=utf-8' );
header("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
set_time_limit(0);
ob_implicit_flush(1);
for ($i=1; $i<=4; $i++) {
echo $i ;
}
for ($i = 0; $i < 2; $i++) {
sleep(2);
if(ob_get_level()>0)
ob_end_flush();
}
for ($i=5; $i<=10; $i++) {
echo $i ;
}
?>