[英]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.