Во время цикла превышено максимальное время выполнения 30 секунд

Мне нужно вызвать функцию сценария 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>";
}}

1

Решение

Ваш цикл 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 минус вашу температуру из запроса. Если результат отрицательный, просто измените его на положительный, и вы получите разницу.

3

Другие решения

В этом цикле:

$tempcounter = 0;
while ($weather["temp"] > 27) {
$tempcounter++;
}

Вы не обновляете $weather["temp"], так что это будет цикл навсегда, если это условие выполняется.

0

Я думаю, что пора над проблемой.

Вы можете решить эту проблему двумя способами.

  1. Установите max_execution_time на большое значение ex. 300 или больше

  2. Начало вашего php-скрипта вызывает функцию set_time_limit

    set_time_limit (0);

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector