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