簡體   English   中英

關於循環的while語句的PHP問題

[英]PHP question regarding a while statement for a loop

我要求有人為我編寫一個循環,盡管我要求循環不斷運行,因為它應該進行檢查。 假設我希望它循環運行2個小時。

他們創造了這個;

$result = select_query ('tbltest', 'id,userid,test');

while ($data = mysql_fetch_array ($result))
{
    $userid = $data['userid'];
    $id = $data['id'];
    $test = $data['test'];
}

我對PHP不太了解,但是在我看來,一旦沒有更多行可以放入數組中,它將結束循環。

我該如何獲取行,但是接下來的兩個小時要繼續循環? 謝謝!

我不知道您為什么要繼續循環2小時而什么也不做,但是這是一種解決方案(盡管這很愚蠢,如果它可以滿足您的目的):

set_time_limit(0);
$time = time();
while (time()<$time+7200)
{
    if ($data = mysql_fetch_array ($result))
    {
        $userid = $data['userid'];
        $id = $data['id'];
        $test = $data['test'];
    }
    sleep(1); // so PHP doesn't consume too much resources
}

如果要檢查一定時間,請設置一個cronjob以每X分鍾運行一次PHP腳本,而不要讓PHP腳本連續循環。

你不能。 當您執行select_query時,它實際上返回截至該時刻的完整結果集的指針。 $data = mysql_fetch_array ($result)只能迭代初始select_query ('tbltest', 'id,userid,test');時結果集中存在的值select_query ('tbltest', 'id,userid,test'); 呼叫..更不用說我想不出任何配置正確的PHP服務器,它會讓您讓腳本運行2小時而不會超時。 也許您想要的是帶有AJAX腳本的首頁,該腳本可以循環地為您重新檢查數據庫。 這樣您就可以擁有$ .GET,並在成功返回數據后觸發另一個$ .GET ...

您不能將原始數據庫查詢放入靜止的循環中嗎?

set_time_limit(0);
$time = time();
while (time()<$time+7200)
{
    $result = select_query ('tbltest', 'id,userid,test');

    if ($data = mysql_fetch_array ($result))
    {
        $userid = $data['userid'];
        $id = $data['id'];
        $test = $data['test'];
    }
    sleep(1); // so PHP doesn't consume too much resources
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM