2011-08-24 58 views
2

我想讓網站每秒寫一條消息。如何每秒打印文本到網頁?

<?php echo '111';?> 

該怎麼辦?

+0

你想腳本運行每一秒?試試[cron](http://en.wikipedia.org/wiki/Cron)。你想要一個單一的腳本發送新的瀏覽器打印一次?試試['sleep()'](http://www.php.net/manual/en/function.sleep.php)。請注意,PHP無法控制瀏覽器呈現其發送的數據的時間,只能將該數據發送到瀏覽器的頻率。 – AgentConundrum

回答

5

如果您希望用戶每秒在瀏覽器中看到消息,這在PHP中不可行。 PHP是服務器端語言,這意味着當頁面到達瀏覽器時,PHP的工作就完成了。

你需要一個客戶端的語言,如Javascript功能來做到這一點,使用類似的setTimeout:

相反,如果你想要的是執行:http://www.w3schools.com/jsref/met_win_settimeout.asp


編輯OP的澄清後,腳本每X秒一次,那麼你應該看看cron。您可以使用cron來安排您的腳本按照您的期望經常運行。

所以它可能是如何工作的一個例子是:

  1. 你寫發送的電子郵件中的腳本一次
  2. 你設置你的crontab來執行你的腳本,比如說,每小時一次
  3. 每小時,cron將會執行你的腳本,向你發送電子郵件
+0

謝謝,但我希望它在服務器上工作,因爲我希望每一秒都爲我發送消息,但我想知道如何在php中使用它 – AboSami

+0

因此,您希望PHP腳本通過什麼發送消息給您?通過電子郵件或通過網頁? –

+0

網頁<?php mail('[email protected]','Hi','你好嗎...等等');?> – AboSami

2

你可以把它在一個循環中像如下

while(1) 
    { 
    echo 111; 
    sleep(1); 
    } 
+1

注意某些瀏覽器(IE)在顯示任何信息之前將需要發送一定數量的數據。(也可能需要配置腳本/服務器以在緩存發出部分完成的頁面之前刷新緩存) – ChrisK

+0

它仍然沒有任何反應 – AboSami

+2

正如其他帖子中提到的,它並不是理想的PHP操作,並且此解決方案將需要一些沖洗服務器配置,或可能與使用ob_flush()和flush()函數 – ChrisK

3

你不能用PHP做到這一點。相反,這將通過Javascript完成。如果要顯示的消息必須由服務器提供,則會使事情變得複雜,需要AJAX事務。但是,如果這些消息是預定義的或可以實時計算的,那麼它就相當簡單:

<div id='someId'>Message will go here</div> 

<script type='text/javascript'> 
    var textSpace = document.getElementById('someId').innerHTML; 
    var refreshTimeout = setInterval(function() { 
    // every second, add another ' message' into the element 
    textSpace = textSpace + ' message'; 
    }, 1000); 
</script> 
+0

謝謝,我需要它在PHP中 – AboSami

0

PHP並不適合您想要的功能。相反,使用Javascript和函數setInterval(functionName, 1000),其中functionName是一個JavaScript函數,它可以寫入所需的消息。

0

另一種方式是自動刷新頁面:

<meta http-equiv="refresh" content="1"> 
<?php echo '111';?>