当计数器超过5时我需要调用脚本函数open(),但是当我加载我的网页时,它会显示一个致命的错误:超过30秒的最大执行时间。这是我的while循环问题吗?
$result = mysqli_query($dbconnect, "SELECT id, temp, hum, lum FROM weather ORDER BY id DESC LIMIT 5");
while($row = mysqli_fetch_assoc($result)){
$weather["temp"] = $row["temp"];
$weather["lum"] = $row["lum"];
$tempcounter = 0;
while ($weather["temp"] > 27) {
$tempcounter++;
}
if($tempcounter > 5){
echo"<script>open()</script>";
}}
答案 0 :(得分:3)
你的while循环是无限的。如果$ weather [“temp”]大于27并且在你内部增加tempcounter但是从不改变$ weather [“temp”],那么循环将开始,所以它总是大于27并且永远不会离开循环。
您可以将$ weather [“temp”]放入变量中。然后在循环内部也增加它。但最重要的是,你需要改变你的状况。如果你增加,你需要检查&lt;如果你递减,你可以检查&gt;。
如果你增加:
$weatherTemp = $weather["temp"];
while ($weatherTemp < 27) {
$weatherTemp++;
}
如果你减少:
$weatherTemp = $weather["temp"];
while ($weatherTemp > 27) {
$weatherTemp--;
}
然后你可以像这样声明$ tempcouter:
$tempcounter = $weatherTemp - $weather["temp"]; //Temperature needed to get to 27
if($tempcounter > 5){
echo"<script>open()</script>";
}
代码未经过测试,可能无效。
如果您想要做的是获得27和温度之间的差异,那么您在这里没有使用正确的逻辑。您可以简单地从查询中减去27减去温度。如果结果是负数,只需将其改为正数即可获得差异。
答案 1 :(得分:1)
我认为现在是问题的时候了。
您可以通过2种方法解决此问题。
将max_execution_time设置为较大的值ex。 <300>或更大
php脚本的开始调用set_time_limit函数
参数或者set_time_limit(0);
答案 2 :(得分:0)
在这个循环中:
$tempcounter = 0;
while ($weather["temp"] > 27) {
$tempcounter++;
}
您没有更新$weather["temp"]
,因此如果满足该条件,它将永远循环播放。