我的foreach功能打印學生名字我該如何運行帶有定時器的php腳本?
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
echo "$name <br />";
sleep(3);
}
如何打印每一個名字,每次3秒了嗎? "echo $name"
後我需要一些計時器來停止循環,並等待3秒鐘。 sleep()
功能在這裏不起作用。我還能做什麼?
我的foreach功能打印學生名字我該如何運行帶有定時器的php腳本?
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
echo "$name <br />";
sleep(3);
}
如何打印每一個名字,每次3秒了嗎? "echo $name"
後我需要一些計時器來停止循環,並等待3秒鐘。 sleep()
功能在這裏不起作用。我還能做什麼?
您可以用JavaScript做到這一點,AJAX
或平齊()函數
<?php
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
echo "$name <br />";
flush();
sleep(3);
}
如果你需要做這在網頁中您需要刷新輸出或者禁用輸出緩衝來完成這項工作。一些參考:
在PHP CLI的代碼將工作。
嘗試使用flush功能
ob_start();
$names = array("Alex","Brad","Tom");
foreach($names as $name) {
echo "$name <br />";
ob_flush();
flush();
sleep(10);
}
你可以寫flush();
後echo
你不能做到這一點的服務器端(可靠)。這是因爲您的流量被持有或緩衝的可能性太大:通過網絡服務器,代理服務器,瀏覽器等等。然而,它可能適用於CLI。
所以我肯定會做它的客戶端,而不犧牲安全(如果需要)。
如果這只是爲了「美觀」的目的,您可以創建一個AJAX方法,它將返回名稱數組,然後讓Javascript將其輸出與其定時器。或者,您可以讓AJAX使用定時器調用PHP腳本,而PHP將只返回一個名稱。它可以將當前時間戳保存在數據庫或會話變量中,並且在一段時間過後纔會返回新的名稱。
查看ob_flush()和flush() –
這是在命令行還是在網頁上? – Jim