Php 一次输出一个循环,而不是一次输出所有循环?
我正在运行PHPSOAP,循环运行了10次迭代。我遇到的问题是,在循环完成之前,它不会输出,从而一次显示每个输出。Php 一次输出一个循环,而不是一次输出所有循环?,php,Php,我正在运行PHPSOAP,循环运行了10次迭代。我遇到的问题是,在循环完成之前,它不会输出,从而一次显示每个输出。 我如何让它在循环过程中一次输出一个,而不是在完成整个10个循环后一次输出全部 <?php $loops = 0; // set loops to 0 // connection credentials and settings $location = 'https://theconsole.com/'; $wsdl = $location.'?wsdl'; $userna
我如何让它在循环过程中一次输出一个,而不是在完成整个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
}
?>
谢谢 查看一下Try命令,如果处理输出缓冲,也可以使用该命令
编辑:
这似乎是命令的一个问题,如果您阅读了注释(甚至是开发人员的注释),则表明如果在脚本中调用了sleep,则在运行它之前不会输出任何内容。如果你循环睡眠呼叫,你必须等到循环结束
阅读评论“mohd at Bahrain dot Bz 16-Dec-2009 09:12”,该方法确实有效,但每次都必须填充缓冲区:(.如果希望在每次迭代中输出每一行,可能需要刷新()和/或ob_flush() 但是,请注意,这并不能绝对保证每一行都可以使用,因为web服务器可能也在进行自己的缓冲。(在IEx和Firefox下测试)
使用此代码,这对我很有用。@Dov是您使用任何类型框架的包含类吗?Zend Cake等…?正在发生某种需要删除的缓冲。另一件事,请在第二个和第三个浏览器中尝试您的页面,因为防病毒软件正在安装工具栏/插件,这些工具栏/插件可以进行缓冲和/或接管HTTP错误代码(即500 400)@Viper_Sb:这两个类都只使用公共函数。我在禁用插件的FF、IE和Chrome中进行了尝试。仍然没有运气:/@Dov好的,可以尝试的一件事是:ob_end_flush();ob_flush();flush();ob_start();一个接一个,但这不应该出现在任何生产资料中,但可能会起作用。@Viper\u Sb:感谢您的帮助!更新的代码-仍然没有运气。@Viper\u Sb:谢谢。睡眠已移除,没有区别。
<?php
if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<10; $i++){
echo "<br> Line to show.";
echo str_pad('',4096)."\n";
ob_flush();
flush();
}
echo "Done.";
ob_end_flush();
?>