我正在运行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
}
?>
谢谢!
答案 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}}
使用此代码,这对我有用。