繁体   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