2011-01-11 121 views
1

我正在運行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 
    } 
?> 

謝謝!

回答

1

看看flush

+0

更新的問題,仍然不工作:( – Dov 2011-01-11 17:09:01

2

嘗試flush()命令,也ob_flush()如果處理輸出緩衝

編輯: 似乎是與sleep()命令的問題,如果在評論中讀取(連開發人員),它表明如果在腳本中調用睡眠,則在運行之後不會輸出任何內容。如果你循環睡眠呼叫,你必須等到循環結束。

閱讀「在巴林點的Bz 16日 - 12月2009年09:12莫哈末」註釋該方法的工作,但你必須填寫每次:(緩衝區。

+0

@Viper_Sb:更新的問題,仍然不工作:( – Dov 2011-01-11 17:08:34

+0

@Dov是你使用任何類型的框架包括的類?Zend蛋糕等...?某種緩衝正在發生還有一件事是,在第二和第三個瀏覽器中嘗試你的頁面,因爲有殺毒軟件正在安裝緩衝和/或接管HTTP錯誤代碼的工具欄/插件(即500 400) – 2011-01-11 17:33:44

0

你可能需要刷新()和/或ob_flush()通過每次迭代,如果你想它輸出每一行,你得到它

但是,請注意,這並不能保證你會得到每一行,因爲它變成可用,因爲Web服務器也可能在做自己的緩衝。

0

(在IEx和Firefox下測試)

<?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(); 
?> 

使用此代碼,這是爲我工作。

相關問題