0
私はPHPとMySQLで全く新しいと言います。その特定のページのDB負荷の「レベル」に基づいて動的リンクを作成するため(DBからデータを取得するための)ループループため2X間少数ループ1 Xを行った後PHP 1x 2x forループは読み込みを極端に遅くします
が遅くなるようになりました。私はlocalhostでMAMPを使っています。
いくつかの修正(最初にMAMPが問題だと思った)を試しましたが、2x forループがあまりに重すぎないかどうかは分かりません。 FOR LOOPS問題を両方とも削除すると、問題が解消されます。
MAMPのため(オンラインでもOK)、それは本当に重く、誰かがページを遅くするものがあるのでしょうか?ヘルプ
ためおかげ
<?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&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>
はEDIT は、いくつかのサイトをテストし、その問題は時としてあまりにも他のサイトで発生したに見えます。 (多分ループのMAMP localhostのエラー+の組み合わせは非常に遅い)
2回目のfor-loopは '$ i'ではなく' $ io'を比較しています。それは事実であるはずですか?定義されていない場合は、2番目のfor-loopで無限ループを実効的に実行しています(終了しないため) –
なぜデータベースからセッションに大量のデータを転送していますか?パフォーマンス上のメリットは得られません。 OTOHセッションでデータが一貫していると仮定できる場合は、クライアントのキャッシュにも一貫性があります(パフォーマンスが向上する可能性があります)。 – symcbean
コードがかなり混乱しています。テンプレートシステムとデータベース抽象化*あなたがユーザーにそれを入力したときに 'username'をどのように消毒するのか分かりませんが、[SQLインジェクション](http://php.net/)があります。 manual/en/security.database.sql-injection.php)攻撃ベクトル*(https://xkcd.com/327/)を参照) – Smuuf