2016-09-24 3 views
0

내 응용 프로그램 파일 시스템에서 파일 액세스에 관한 기본 정보를 모니터하는 방법을 찾으려고합니다. 파일은 공개 드라이버를 사용하여 저장되며 해당 심볼릭 링크를 통해 공개적으로 사용할 수 있습니다. 파일에 액세스 할 때마다 데이터베이스에 레코드를 추가하려고합니다. 별도의 컨트롤러를 만들지 않고도이 작업을 수행 할 수 있습니까? 파일 시스템 미들웨어 유형 메커니즘일까요?Laravel에서 파일 시스템 액세스를 모니터링하려면 어떻게합니까?

답변

1

먼저 정적 파일은 PHP 응용 프로그램 (이 경우 Laravel)에서 처리하지 않으며 웹 서버 (Nginx, Apache 등)에서 처리합니다.
일반적인 구성은 PHP 요청 인 경우 요청을 PHP로 라우트하며 정적 파일 인 경우에만 파일을 제공합니다.

웹 서버에 응용 프로그램의 특정 URL을 통해 모든 정적 파일을 라우팅하도록 지시 한 다음 컨트롤러에서 해당 파일을 제공하고 통계를 저장할 수 있지만 정적 파일은 웹 서버 및 PHP 응용 프로그램을 통해 처리하는 경우 성능에 영향을주는 많은 작업을 추가 할 것입니다.

해결책

당신은 로그 파일의 각각의 새로운 라인을 호출하고 있는지 명령이 항상 호출 할 어쩌면 SupervisorD를 사용하여 얻는 Laravel 콘솔 명령을 만들 수 있습니다. 할 -F 로그 회전을 처리 할

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

-n 1 첫 번째 마지막 줄을 사용 (또는 어쩌면 당신은 -n 0으로 시도해 볼 수도 있습니다) :

그래서, 당신은 당신의 명령을 이런 식으로 뭔가를 호출 할 수있다 어떤 이유로 든 프로세스가 다시 시작되고 register:log이 Laravel에서 콘솔 명령의 서명 일 수있는 경우 오래된 행을 고려하지 마십시오.

그런 식으로 액세스 로그의 각 새 행은 로그 행을 입력으로 사용하여 명령을 호출합니다.

관련 문제