我想讓PHP輸出一些文本,然後睡一會兒,然後輸出一些更多的文本。睡前PHP輸出文本
<?php
echo 'Output one.';
usleep(1500000);
echo 'Output two.';
?>
我的問題是,所有的文本被同時推出 - 後等侯的1.5秒。我已經閱讀了一些關於一個叫做flush的函數 - 但它似乎不起作用。也許我沒有用它寫。任何幫助將不勝感激^^
在此先感謝!
我想讓PHP輸出一些文本,然後睡一會兒,然後輸出一些更多的文本。睡前PHP輸出文本
<?php
echo 'Output one.';
usleep(1500000);
echo 'Output two.';
?>
我的問題是,所有的文本被同時推出 - 後等侯的1.5秒。我已經閱讀了一些關於一個叫做flush的函數 - 但它似乎不起作用。也許我沒有用它寫。任何幫助將不勝感激^^
在此先感謝!
檢查了這一點
<?php
ob_start();
echo 'Output one.';
ob_flush();
usleep(1500000);
echo 'Output two.';
ob_flush();
?>
雖然Pentium10的解決方案可能會工作,你可能要考慮這個移動到客戶端。進行異步調用以獲取第一個值,打印它,休眠所需的時間,然後重複第二個值。
我認爲這是一個http請求/響應問題。在命令行中,腳本可以正常工作。
正常情況下,響應已準備完畢併發送給客戶端。如果您的響應的大小必須發送多個tcp包,則可能會在腳本準備好處理之前發送第一個包。所以它取決於輸出的大小。根據客戶端/網絡瀏覽器的不同,在完整的響應到達客戶端之前,也可能會發生第一個包被渲染的情況。
作爲Noufal Ibrahim即時通訊打字時回答,我完全同意他。以異步方式進行。
Pentium10的答案對我來說並不適用。但是當我去到PHP文檔頁面時,那裏有很多好評。
http://php.net/manual/en/function.ob-flush.php
這爲我工作使用的是Firefox 3.5.9,PHP 5.2.11,阿帕奇流失本地的Windows 7筆記本電腦:
echo "test";
ob_end_flush();
flush();
usleep(x);
echo "test";
的ob_end_flush()函數是爲了獲取發送的數據是至關重要的。
謝謝,工作! – 2015-12-26 12:39:24
echo 'Output one.';
ob_flush();
flush();
usleep(1500000);
echo 'Output two.';
你的問題是,這是PHP。這是一個預處理器。因此,PHP腳本運行,輸出第一個日誌,然後睡覺,然後輸出第二個日誌,只有它被髮送並顯示在瀏覽器中。
如果您希望延遲在瀏覽器屏幕上可見,則需要javascript。
function showLog() {
$(".secondlog").show();
}
$(document).ready(function() {
setTimeout(showLog,3000);
});
.firstlog {
border: 1px solid #AEAEAE;
}
.secondlog {
display: none;
border: 1px solid #AEAEAE;
margin-top: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="firstlog">
Output of first log
</div>
<div class="secondlog">
Output of second log
</div>
<p>Wait for 3 seconds...</p>
這並沒有爲我工作,但我接着說:沖洗();''每次之後使用ob_flush();'然後它的工作。有人可以解釋爲什麼我需要「沖洗」嗎? – Salam 2018-03-05 09:25:49