2012-06-18 2 views
3

내가 사용하는 우분투 내 NodeJS 서버의 설정 파일을보고있어 두 번 또는 더 자주 이벤트를 던지는 updateConfigData()가 여러 번 실행되도록하는 동일한 파일 이름에 대한 핸들러 함수로 최소한 두 번. 나는 C++/iNotify를 사용하여 설정 파일을 볼 때 같은 행동을 경험했다.NodeJS 파일 시스템 시계

아무도이 동작을 일으키는 단서가 있습니까?

+0

상황을 확인할 기회가 있습니까? 당신의 문제는 제가 아래에서 설명했던 것과 동일합니까? 제 대답에 설명이 필요하면 의견을 남겨주세요. – hasanyasin

+0

내 답변으로 문제가 해결되지 않았습니까? – hasanyasin

+0

미안하지만, 나는 다른 프로젝트 영역에서 꽤 바쁘다.하지만 분명히 다시 돌아올 것이다. –

답변

5

짧은 답변 : 노드가 아니므로 파일은 실제로 두 번 변경됩니다.

긴 대답

나는 내 개발 설치에 사용하는 매우 유사한 접근 방식을 가지고있다. 관리자 프로세스는 모든 js 소스 파일이 개발 시스템이고 클러스터에서 자식을 다시 시작하는 경우 모든 파일을 감시합니다.

개발 설치 이후로는 아무런주의를 기울이지 않았습니다. 그러나 당신의 질문을 읽은 후에 나는 그것을 보았고 나는 똑같은 행동을한다는 ​​것을 깨달았습니다.

내 로컬 컴퓨터의 파일을 편집하고 편집 할 때마다 내 편집기에서 sftp를 통해 파일을 업데이트합니다. 모든 저장시 파일의 변경 이벤트가 두 번 트리거됩니다.

fs.watch 호출에 의해 반환 된 FSWatcher 개체에 대한 청취자 ('change')를 확인했습니다. 하지만 내 이벤트 처리기를 한 번만 보여줍니다.

그러면 먼저해야 할 테스트를 수행했습니다. 서버에서 "file.js"를 터치하면 한 번만 실행됩니다. 그래서, 저에게는 노드가 아닙니다. 파일은 실제로 두 번 변경되었습니다. 파일을 쓰기 위해 (추가하는 대신) 열면 내용을 비울 예정이므로 변경을 유발합니다. 그런 다음 새 컨텐츠가 작성되면 두 번째 이벤트를 트리거합니다.

이 문제는 저에게 아무런 문제가되지 않습니다. 하지만이를 방지하려면 이벤트 핸들러 함수에서 각 파일의 호출 번호를 유지하고 짝수 인덱스 호출에서만 수행하는 작업을 수행하여 홀수 짝수 제어를 수행 할 수 있습니다.