2016-09-24 16 views
0

私は、アプリケーションファイルシステム上のファイルへのアクセスに関する基本情報を監視する方法を見つけようとしています。これらのファイルはパブリックドライバを使用して格納され、適切なシンボリックリンクを介して公開されています。ファイルにアクセスするたびにデータベースにレコードを追加したい。別のコントローラを作成せずにこれを達成する方法はありますか?ファイルシステムのミドルウェア型のメカニズムでしょうか?Laravelでのファイルシステムアクセスを監視するにはどうすればよいですか?

答えて

1

まず、静的ファイルが(この場合はLaravelに)あなたのPHPアプリケーションによって処理されません、それらはWebサーバー(nginxのは、Apacheなど)によって処理されます。
通常の設定では、PHP要求の場合にのみリクエストをPHPにルーティングし、静的ファイルの場合はそのファイルを提供します。

すべての静的ファイルをアプリケーションの特定のURLにルーティングするようにWebサーバーに指示し、コントローラ内でそのファイルを提供して統計情報を保存することができますが、静的ファイルはPHPアプリケーションを使用して処理する場合、パフォーマンスに影響する多くの作業を追加します。あなたは、ログファイルのそれぞれの新しい行を呼び出し、コマンドが常に呼ばれることを確認するために、多分SupervisorDを使用して取得しますLaravelコンソールコマンドを作成することができ

ソリューション

だから、あなたはあなたのコマンドを呼び出すには、このようなものかもしれない:作るために-n 1が最初の最後の行を使用します(または多分あなたは-n 0と試みることができる)、-Fはログローテーションを処理する

tail -F -n 1 /path/to/access.log | /usr/bin/php /path/to/application/artisan register:log 

を何らかの理由でプロセスが再起動し、register:logがLaravelのコンソールコマンドのシグニチャである可能性がある場合は、古い行を考慮しないでください。

そのように、アクセスログ内の各新しい行が入力としてログ行を使用してコマンドを呼び出します。

関連する問題