关于循环的while语句的PHP问题

时间:2010-11-22 18:11:53

标签: php mysql arrays

我让别人为我编写循环代码,虽然我要求循环不断运行,因为它应该进行检查。说我希望它循环运行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小时内继续循环? 谢谢!

4 个答案:

答案 0 :(得分:1)

我不知道你为什么要继续循环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
}

答案 1 :(得分:0)

如果你想在一段时间内检查某些内容,你应该设置一个cronjob来每隔X分钟运行一个PHP脚本,而不是让PHP脚本连续循环。

答案 2 :(得分:0)

你不能。当你执行select_query时,它实际上会返回一个完整结果集的指针。 $data = mysql_fetch_array ($result)只能迭代初始select_query ('tbltest', 'id,userid,test'); 调用时结果集中存在的值。更不用说我想不出任何正确配置的PHP服务器了让你让脚本运行2个小时而不会超时。也许你想要的是一个带有AJAX脚本的首页,它在循环中为你重新检查数据库。这样你就可以得到你的$ .GET,并且在成功返回你的数据后,你就会开启另一个$ .GET ......

答案 3 :(得分:0)

你不能把原始数据库查询放在stillstanding的循环中吗?

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
}