1

私は CakePHP フレームワークが初めてで、「Hello World」プロジェクトをセットアップしようとしています。これに取り組んでいるときに、単純な DB クエリを実行すると、CakePHP からの応答が非常に遅くなることを経験しました。

私が行った手順は次のとおりです。

  1. CakePHP フレームワーク (2.3.0 RC1) をダウンロードしてセットアップします
  2. 「Tests」という名前の空のテーブルで「Test」DB を作成します。
  3. デフォルトの AppController.php ファイルを次のように編集します。

    class AppController extends Controller {
    
        var $uses = array('Test');
    
        function say_hello() {
        $this->Test->query("select * from test where id=0");
        echo "hello";
        }
    }
    
  4. その後、「http://localhost/app/say_hello」というリンクにアクセスしたところ、応答に1秒以上かかりました。

次のようにクエリステートメントをコメントアウトした場合:

class AppController extends Controller {

    var $uses = array('Test');

    function say_hello() {
        //$this->Test->query("select * from test where id=0");
        echo "hello";
    }
}

その後、応答するのに約 60ms しかかかりませんでした。

空のテーブルで単純なクエリを実行するのに約 940 ミリ秒かかるはずがないため、これは私には正しくないようです。DebugKit でデバッグを試みたところ、ControllerAction (この場合、say_hello アクションは非常に単純です) が 1 秒以上の処理時間を取っていることがわかりました。また、遅延の問題は DB が原因ではないことに注意してください。DebugKit は、say_hello アクションの実行時にクエリが 1 つしかないことを示し、そのクエリが完了するまでにほぼ 0 ミリ秒かかりました。

何がそのような遅さの原因なのかわかりません。この場合の何が問題なのか、経験豊富な CakePHP メンバーが教えてくれますか? 問題をトラブルシューティングして修正するには、他に何をすべきですか?

ありがとう。

4

2 に答える 2

7

デバッグモードでは、CakePHP はデータベースバインディング、オブジェクトキャッシュ、スキーマを短時間で更新し、定義されたモデルにマップされたテーブルを記述します。

CakePHP アプリのパフォーマンスをテストする前に、デバッグ レベルを 0 に変更してください。

于 2013-01-15T19:54:28.100 に答える