2012-05-06 48 views
1

我有一個運行幾個連續的php/bash腳本的html頁面,我希望在下一個腳本啓動之前在頁面上顯示結果。那可能嗎?有沒有辦法顯示一半加載的HTML或PHP

例子:

<html> <body> 
<br>Html1<br> 
<?php 
echo "A"; 
sleep(4); 
echo "B"; 
?> 
<br>Html2<br> 
<?php 
echo "C"; 
sleep(4); 
echo "D"; 
?> 
<br>Html3<br> 
</body> </html> 

...這裏上什麼都沒有之前一切都做。

回答

2

這可能是一個緩衝問題。

執行flush()在連續的echo之間刷新PHP的內部輸出緩衝區。

請注意,雖然您的網絡服務器可能會做額外的緩衝,瀏覽器也可以,所以它不能保證所做的更改將顯示在瀏覽器中。

如果您想測試是否涉及其他緩衝區,您可以在每個輸出後張貼長HTML註釋。

例如:

<?php 
    echo "<!-- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... aaa -->"; 
?> 

如果註釋是足夠長的時間,將填充緩衝區,迫使它刷新。

請注意,這僅用於測試,不要在生產代碼中使用。

+0

這不會這樣做。 (即使輸出緩衝被禁用,它也不會顯示。)你的意思是:['flush()'](http://php.net/flush)? – Ryan

+0

@minitech它應該被啓用 – KBN

+0

即使不使用'ob_'函數,PHP的內存緩衝 – Tibor

相關問題