20

注: 問題の原因がわかったので、質問を修正しました。現在、必要な情報のみが含まれています。

Laravel PHP フレームワークは初めてです。

コンピューターで非常に小さなアプリが動作しています。MySQL データベースに接続され、User モデルがあります。ログインとログアウトには Auth クラスを使用します。

すべて正常に動作しますが、ログインすると、ページの読み込みに約 1 秒かかり、非常に遅くなります。ログインしていないときは、数ミリ秒です。

組み込みのプロファイラーを使用することで、2 つの問題に気付きました。まず、私が言ったように、ページの読み込みには 1000 ミリ秒以上かかります。次に、ログイン時にページをロードするたびに、フレームワークが 1 つの SQL を作成します。クエリは、特定の ID (私の ID) を持つユーザーを検索します。ログインしているユーザーに関する情報を取得するためにあると思います。しかし、ある種のキャッシュがあるはずではありませんか。私の Web サイトが 1 秒間に多くのリクエストを処理しなければならない場合、これは問題になるでしょうか。

Auth::check()ビューでの使用が問題の原因であることに気付きました。Auth::check()私のブレードビューは約4です。私が何も持っていないとき、それは速くなります。私が持っている場合、それは遅いです。そうすれば、いくら持っていても、それほど遅くなることはありません。Auth クラスの初期化に時間がかかりすぎる場合などです。ログインしているときにのみ発生する理由を説明していると思います。

Laravel のコードを詳しく調べたところAuth::check()、 が初めて呼び出されたときに、Auth クラスがデータベースからユーザーの情報を取得してセッションを「アクティブ化」する必要があることがわかりました。これは、ページ要求ごとに実行されるクエリを説明しています。しかし、プロファイラーはクエリの実行に 1 ミリ秒もかからないと言っているので、アプリの速度が低下する理由はまだわかりません。

新しい情報:データベースにクエリを送信していない場合でも、データベースに接続する単純な動作にほぼ 1 秒かかります。これが遅い理由です。問題の解決にかなり近づいていると思います。

これまでのところ何か考えはありますか?

前もって感謝します。

ノート

  • ビューにあるという事実Auth::check()は何も変更しません。
  • のような別の方法を使用Auth::guest()しても問題は解決しません。
  • 新規:データベースへの接続が遅いです。
4

2 に答える 2

38

私はついにこれを修正する方法を見つけました。

XAMPP、MySQL、および PHP に関する多くのフォーラムでいくつかの投稿を読んでいるときに、locahostには追加の DNS ルックアップが必要なため、 127.0.0.1を使用することが望ましいとどこかで読みました。

データベース構成ファイルで、locahost127.0.0.1に変更しただけです。

今ではすべてが高速です。

これは本当に奇妙だと思います。データベース接続に 1 秒以上かかる構成ファイルでlocahostを使用する!

于 2012-10-12T05:16:32.807 に答える
2

Hammo の例には同意しません。ID 以外のユーザー情報をセッション内に保持することはセキュリティ上のリスクとなるため、ほとんどのフレームワークはこの方法を採用しています。ユーザーがログインしているときに、レコードのクエリ以外に何か実行されていることはありますか? それがアプリケーションの速度を低下させているわけではありません。

于 2012-10-11T04:33:09.843 に答える