输出循环一次一个而不是一次全部?

时间:2011-01-11 15:41:12

标签: php

我正在运行PHP SOAP,循环运行10次迭代。我遇到的问题是,在循环完成之前它不会输出,从而一次显示每个输出 如何在循环处理过程中一次输出一个,而不是在完成整个10个循环后一次性输出一个?

<?php

$loops = 0; // set loops to 0

// connection credentials and settings
$location = 'https://theconsole.com/';
$wsdl = $location.'?wsdl';
$username = 'user';
$password = 'pass';

// include the console and client classes
include "class_console.php";
include "class_client.php";

// create a client resource / connection
$client = new Client($location, $wsdl, $username, $password);

while ($loops < 10)   
    {
    $dostuff;
    $echo "It has done: " .$stuff; // display output
    ob_end_flush(); ob_flush(); flush(); ob_start(); // added as per comments below - still not working
    }
?>

谢谢!

4 个答案:

答案 0 :(得分:2)

如果处理输出缓冲

,请尝试flush()命令,ob_flush()

编辑: 似乎是sleep()命令的问题,如果您在注释中读到(甚至是开发者),它表明如果在脚本中调用sleep,则在运行之前不会输出任何内容。如果你循环睡眠调用,你必须等到循环结束。

阅读评论“mohd at Bahrain dot Bz 16-Dec-2009 09:12”该方法确实有效,但每次都必须填充缓冲区:(。

答案 1 :(得分:1)

查看flush

答案 2 :(得分:0)

如果你希望它在你得到它时输出每一行,你可能需要在每次迭代时刷新()和/或ob_flush()。

但是,请注意,这并不能绝对保证您将获得每条线路,因为网络服务器也可能正在进行自己的缓冲。

答案 3 :(得分:0)

(在IEx和Firefox下测试)

{{1}}

使用此代码,这对我有用。