首页 > 解决方案 > PHP 中的循环耗时,致命错误:超过 120 秒的最大执行时间

问题描述

致命错误:超过 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

标签: phploopsmysqlipdowhile-loop

解决方案


never的值会$stmtpr->rowCount()改变,因此您的循环永远不会结束。你基本上是在说:

while (10 > 1) { ... }

目前尚不清楚您要做什么,但似乎您正在尝试重新查询刚刚查询的相同行。您可能只想遍历原始结果集。

另请注意,这ORDER BY RAND()是众所周知的表现不佳。检查这个问题以获取一些替代想法。


推荐阅读