私が取り組んでいるプロジェクトの要件の1つは、可能な限り多くの情報を得るために行われている処理量のために、サイトへの接続を記録することです。ページがユーザーに返送された後にこれを処理する。Cakephp 3のプロセスコードページ応答後
私は私のAppControllerのafterFilter
に私のコードを実行しています現時点では:
public function afterFilter(Event $event){
$log_request = new RequestsController;
$log_request->log_request();
}
私は私のAppControllerのafterRender
でこれを実行しようとしています:
public function afterRender(Event $event, $viewFile){
$log_request = new RequestsController;
$log_request->log_request();
}
しかし、私はできないようですコードが実行されるようにするには、エラーがスローされているかどうかを調べる方法がわかりません。
誰かが私にこのようなことが行われているかどうか、またはこれを行うための並行方法を指摘できれば(それはリクエストの1秒以内に記録する必要があります)、私はそれを感謝します。
私はこれ以上説明する必要があります!このデータはデータベースに記録されており、appControllerは認証を設定する場所なので、毎回実行する必要があります。私はこのコードをすぐ下に置くことにしました。データはコントローラのアクションから見ることができます。私はこれがここに属していないことに同意するが、それ以外はどこに置くべきか分からない。ロギングについてのあなたのリンクの後、私はこのデータを見るためのコントローラを持っていて、これをデータベースに書き込むためにロギング機能を使うべきですか?もしそうなら、ページがクライアントに送信された後、どうすればいいですか? –
これは私の答えを変更しません。 DBログエンジンを介してデータベーステーブルにログを記録するだけです。私はCakePHPコアが変更されたかどうかはわかりませんが、これを試すことができます。https://github.com/burzum/cakephp-database-logドキュメントからDBログエンジンの実装です。ログ全体の章を読んでください。また、多くのリクエストを受け取った場合、このようなSQL DBへのロギングはパフォーマンス上の良い考えではありません。 Webサーバーのログが不十分なのはなぜですか? – burzum
ありがとうございます:)私の唯一の未解決の質問は、クライアントに応答が送信された後にこれをどうやって行うのですか?私はPHPがマルチスレッドをサポートしておらず、クライアントがページを取得する前にこの処理を待つ必要はないと読んでいます。 (ケーキデバッグツールキットによると約0.6msかかる)。データベースの理由は、プロジェクトがこの情報の履歴から特定の条件に基づいて反応するためです。 –