2017-09-11 1 views
0

현재 fs.watch을 사용하여 node.js의 파일을 모니터링하고 있습니다. 내가 가진 문제는 예를 들어,보고있는 폴더에 1gig 파일을 복사한다고 가정 해 보겠습니다. 파일 복사가 시작되면 파일에 대한 알림이 표시됩니다. 즉시 파일을 읽기 시작하면 파일이 복사되지 않아 불량 데이터로 끝납니다. 예를 들어, zip 파일은 목차가 끝에 있습니다. 그러나 목차가 나오기 전에 읽는 것이 끝납니다.파일의 변경 사항을 모니터링하고 변경이 끝났을 때 파일을 보는 방법은 무엇입니까?

내 머리 꼭대기에서 파일을로 전화를 걸고 통계가 멈출 때마다 읽으려고 몇 가지 작업을 설정할 수있었습니다. 그게 작동하지만 이상한 것 같아요 내 애플 리케이션을 가능한 한 반응이 좋으면하고 매초마다 파일의 무리에 대한 통계를 호출 무거운뿐만 아니라 5 또는 10 초마다 stat를 호출 응답하지 않는 것 같습니다.

파일 수정이 완료되었을 때 알림을받는 좀 더 강력한 방법이 있습니까?

+0

잘못되었을 수도 있지만 "수정 된"날짜가 아니며 변경 후 파일에서 마지막으로 수정 된 정보가 있습니까? –

답변

1

그래서 작년에 "파일보기"를해야하는 프로젝트를 수행했습니다. 밖에 도서관이 더 있습니다 fs.watch보다. 체크 아웃 npm chokidar. https://www.npmjs.com/package/chokidar

아래에는 fs.watch가 사용되지만 그 주위에는 더 나은 개선이 이루어집니다.

awaitWriteFinish이라는 속성이 있습니다. 실제로 파일에 대한 폴링을 수행하여 파일 쓰기가 완료되었는지 여부를 판별합니다. 나는 그것을 사용하고 정말 잘 작동합니다.

이 속성을 설정하면 해당 파일에 대해 작업 할 수 있으며 항상 파일이 완전히 작성되었는지 확인할 수 있습니다. 그리고 파일이 완성되었는지 여부를 결정하는 독자적인 방법을 구현하지 않아도됩니다. 시간을 많이 절약해야합니다.

그 외에도 파일 작성이 완료되었는지를 결정하는 데있어 polling에서 정말로 벗어날 수 있다고 나는 생각하지 않습니다. Chokidar는 여전히 투표를 진행하고 있으며, 논리를 작성하지 않아도됩니다. 그리고 CPU 사용률이 너무 높다고 간주되면 폴링 간격을 구성 할 수 있습니다.

편집 : 추가하고 싶습니다. 그냥 찍어서 어떻게 작동하는지 봅니다. 나는 당신이 가능한 한 반응이 좋기를 원한다. 그러나 일하는 것이 무언가를 전혀하지 않는 것보다 낫다. 폴링 솔루션을 사용해도 문제가되지 않을 수도 있습니다. 성능 문제로 판단되면 그 시점에 문제를 해결하고 "더 나은"솔루션을 찾으십시오.

관련 문제