PHP 1x while 2x for 循环极大地减慢了加载速度

标签 php mysql

首先我想说我对 PHP 和 MySQL 绝对是新手。

进行几次循环后1 x While循环(用于从数据库获取数据)和2x for循环用于根据数据库加载中的“级别”创建动态链接特定页面开始变慢。我在本地主机上使用 MAMP。

尝试找到一些修复程序(首先认为 MAMP 有问题),但现在我不知道 2x for 循环对于页面来说是否不太重。当我删除两个 FOR LOOPS 时,问题就消失了。

可能是因为 MAMP(它可以在线运行)或者它真的很重并且有人看到任何减慢页面速度的东西?

感谢您的帮助

<?php
session_start();
require('connect.php');
$level1 = "<p class='text-center mt-5' style='font-size:8vh'>Bez přihlášení do této sekce nemáte přístup</p>";  

if (isset($_SESSION['username'])){
    $username = $_SESSION['username'];
    $logmsg = "<p class='logged-in'>Jste přihlášen jako <b>$username</b>. <a href='process/logout.php'>Odhlásit se</a></p>";
    $level1 = "<p class='level'><a href='levels/level1.php'>Level1</a></p>";

    $query = "SELECT * FROM user WHERE username='$username'";
    $result = mysqli_query($connection, $query) or die(mysqli_error($connection));

    if (mysqli_num_rows($result) > 0) {
    // output data of each row
        while($row = mysqli_fetch_assoc($result)) {
            $_SESSION['level'] = $row["level"];
        }
    }

    for ($i = 0 ; $i <= $_SESSION['level'] ; $i++) { 
        ${"level$i"} = "<p class='level-size'><a href='levels/level$i.php'>Hádanka $i</a></p>";

    }
}
?>

<html>
<head>
    <meta charset="UTF-8">
    <title>Úvod</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="/style.css">
    <link href="https://fonts.googleapis.com/css?family=Patrick+Hand+SC&amp;subset=latin-ext" rel="stylesheet">


    <style type="text/css">
        label,small,button div {
            font-size: 2.5vh
        }
    </style>

</head>
<body class="second-page-body">
    <?php if(isset($logmsg)){ ?><div class="text-right"> <?php echo $logmsg; ?> </div><?php } ?>
    <div class="container">
        <h1 class="text-center p-5"><strong>Willkommen</strong></h1>
    <div class="level-container">   
        <?php for ($i=0; $io <= $_SESSION['level'] ; $i++) { 
                if(isset(${"level$i"})){
                    echo ${"level$i"};
            }
        } ?>
    </div>
    </div>
</body>

编辑 测试了几个网站,看起来其他网站有时也会出现问题。 (也许 MAMP 本地主机错误 + for 循环的组合非常慢)

最佳答案

<?php 
    for ($i=0; $io <= $_SESSION['level'] ; $i++) { 
            if(isset(${"level$i"})){
                echo ${"level$i"};
        }
    } ?>

$io <= $_SESSION['level'] 似乎存在错误。我认为应该是 $i <= $_SESSION['level']

编辑 感谢帮助。还发现 IF 语句在那里没有用。

我认为循环和控制语句的使用或操作是错误的。尝试优化您的代码,它应该使加载速度更快

关于PHP 1x while 2x for 循环极大地减慢了加载速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47983772/

相关文章:

php - 网站结果中的内存/CPU 使用情况

php - Laravel 5.8 : How to send email after user click verify link

php - Laravel - 通知或分派(dispatch)作业队列工作人员 laravel 会导致带锁表的双重选择吗?

java - 使 hibernate 反引号所有表/列名

python - 为什么我的 Python MySQLdb 脚本可以查看我的数据库,但不能对其进行实时更改?

php - 如果 0 变为 1,则更改 mySQL 数据库记录值 onclick

php - 当涉及的字段之一为 NULL 时,MySQL 错误地允许重复条目

php - 从 SHOW COLUMNS mysql 中排除某些列

php - 如何在mysql中选择日期和时间之间的行?

php - mysql AND vs JOIN 输出重复项