Цикл в PHP принимает время, Неустранимая ошибка: максимальное время выполнения 120 секунд превышено в - PullRequest
0 голосов
/ 29 июня 2018

Неустранимая ошибка: максимальное время выполнения 120 секунд превышено в ...

$level = "1";

$get_question = $user_home->runQuery('SELECT * FROM questions WHERE Level = :Level ORDER BY RAND()');
$get_question->bindparam(":Level",$level);
$get_question->execute();
$fetch_question=$get_question->fetch(PDO::FETCH_ASSOC);

$stmtpr = $user_home->runQuery("SELECT * FROM used WHERE Last=:user_name");
$stmtpr->execute(array(":user_name"=>$fetch_question['Id']));
$rowpr = $stmtpr->fetch(PDO::FETCH_ASSOC);

while($stmtpr->rowCount() > 0)
        {
    $get_questionl = $user_home->runQuery('SELECT * FROM questions WHERE Level = :Level ORDER BY RAND()');
    $get_questionl->bindparam(":Level",$level);
    $get_questionl->execute();
    $fetch_question=$get_questionl->fetch(PDO::FETCH_ASSOC);
        }

Выполнение занимает время только тогда, когда оно входит в loop.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Значение $stmtpr->rowCount() никогда не меняется, поэтому ваш цикл никогда не заканчивается. Вы в основном говорите:

while (10 > 1) { ... }

Не совсем понятно, что вы пытаетесь сделать, но, похоже, вы пытаетесь повторно запросить те же строки, которые вы только что запросили. Возможно, вы просто хотите перебрать исходный набор результатов.

Также обратите внимание, что ORDER BY RAND() общеизвестно не работает. Проверьте этот вопрос на наличие альтернативных идей.

0 голосов
/ 29 июня 2018

Добавьте вверху это в своем коде Неограниченное время исполнения

ini_set('max_execution_time', 0);

Также вы можете добавить неограниченное использование памяти

ini_set("memory_limit", "-1");

В вашем случае также измените rowCount () следующим образом

  $count = $stmtpr->rowCount();

while($count > 0)
        {
    $get_questionl = $user_home->runQuery('SELECT * FROM questions WHERE Level = :Level ORDER BY RAND()');
    $get_questionl->bindparam(":Level",$level);
    $get_questionl->execute();
    $fetch_question=$get_questionl->fetch(PDO::FETCH_ASSOC);
    $count--;
        }
...