PHP 中的循环需要时间,致命错误:超过了最大执行时间 120 秒

问题描述 投票:0回答:3

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

php loops mysqli pdo while-loop
3个回答
2
投票

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

while (10 > 1) { ... }

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

另请注意,

ORDER BY RAND()
是出了名的性能不佳。检查这个问题以获取一些替代想法。


1
投票

在代码顶部添加此内容 无限执行时间

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--;
        }

0
投票

你好 j'ai un soucis avec mon code je suis dans encore débutante et je ne comprend pas ce qui se passe sur mon code。 J'ai essaye ce que je connaissais mais toujours rien

发出代码片段

<?php
function repondre($phrase){
    while (true) {
        $resultat = readline($phrase .  "-(o)ui/(n)on");
        if($resultat ==='o'){
            return true;
        }elseif($resultat ==='n'){
            return false;
        }
    }
}
$repondre = repondre('voulez vous continuer ?');
var_dump($repondre);
?> 
© www.soinside.com 2019 - 2024. All rights reserved.