2013-05-30 41 views
3

我正在嘗試打印某些內容,請等待5秒鐘並移至其他頁面。 我正在使用睡眠功能,但由於某些原因沒有打印出來,看起來像跳過了打印部分。使用php sleep()函數

它看起來像這樣:

<?php 
echo "Thank you!"; 
sleep(5); 
?> 
<script type="text/javascript"> window.location = '?a=home'; </script> 
+2

如果你想這樣做,那麼你必須用做在JavaScript'setTimeout' 。在你的頁面顯示之前,PHP運行**完成**。 – Jon

+0

它不會跳過它,它只是在它呈現給客戶端之前休眠。你寫的事件順序是「睡5秒,打印一些東西,移動到另一頁。」 – David

+0

[睡眠問題()和重定向的可能重複](http://stackoverflow.com/questions/12298909/php-issue-with-sleep-and-redirect) – Jon

回答

11

您需要刪除PHP和JavaScript的唯一使用:

<script type="text/javascript"> setTimeout(
function() { 
    window.location = '?a=home'; 
}, 5000); 
</script> 
+1

謝謝先生!只要網站允許,我會盡快接受您的回答。 –

0

我敢肯定,使用睡眠只是延緩了執行程序。只有當您的PHP腳本完成時纔會看到內容,並且由於睡眠功能而阻止了該內容。

5

也許最好使用HTML元刷新標記。它具有相同的功能,但來自客戶這樣做:

<meta http-equiv="refresh" content="5;URL='?a=home'"> 

您可以在這裏找到更多的信息:http://www.metatags.info/meta_http_equiv_refresh

2

您可以使用JavaScript來做到這一點:

setTimeout('window.location.replace("?a=home")',5000); 
+1

這個答案會起作用,但在'setTimeout'中對代碼使用字符串是不好的做法。根據最高投票答案將其寫爲一個函數。 – Spudley