Мне нужно вызвать функцию сценария open (), когда счетчик превышает 5, но когда я загружаю свою веб-страницу, она показывает мне фатальную ошибку: максимальное время выполнения 30 секунд превышено. Это моя проблема во время цикла?
$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>";
}}
Ваш цикл while бесконечен. Цикл запустится, если $ weather [«temp»] больше 27 и внутри вас увеличивает значение tempcounter, но никогда не изменяет $ weather [«temp»], поэтому он всегда будет больше 27 и никогда не выйдет из цикла.
Вы можете поместить переменную $ weather [«temp»] в переменную. Затем внутри цикла увеличьте его тоже. Но самое главное, вам нужно изменить свое состояние. Если вы увеличиваете, вы должны проверить < и если вы уменьшите, вы можете проверить>.
Если вы увеличиваете:
$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 минус вашу температуру из запроса. Если результат отрицательный, просто измените его на положительный, и вы получите разницу.
В этом цикле:
$tempcounter = 0;
while ($weather["temp"] > 27) {
$tempcounter++;
}
Вы не обновляете $weather["temp"]
, так что это будет цикл навсегда, если это условие выполняется.
Я думаю, что пора над проблемой.
Вы можете решить эту проблему двумя способами.
Установите max_execution_time на большое значение ex. 300 или больше
Начало вашего php-скрипта вызывает функцию set_time_limit
set_time_limit (0);