2014-11-28 4 views
2

사용자의 컴퓨터에 있거나 온라인 일 수도 있고 아닐 수도있는 네트워크 볼륨에있는 파일의 데이터베이스를 유지하는 앱이 있습니다. 이 데이터베이스는 잠재적으로 여러 폴더에있는 수천 개의 파일 일 수 있습니다. 파일의 이름이 변경되거나 이동되거나 삭제 될 때 알림을 수신하도록 모니터하는 가장 좋은 방법은 무엇입니까?이동, 삭제 및 이름 변경을 위해 수천 개의 파일을 모니터링하는 최고의 코코아 방식?

이전에 FSEvents를 단일 디렉토리로 사용했지만 수천 개의 개별 파일로 확장되지 않는다고 생각합니다. kqueues 사용은 어떻습니까?

나는 가능한 한 적은 수의 폴더와 모든 파일을 포함하려고 폴더의 동적 목록을 유지하려고 할 수도 있습니다, 그러나 이것은 등 공통의 조상을 전체 목록 불구하고 읽고 이해하려고 노력을 의미

생각이나 제안?

애플의 워드 프로세서
+0

어떤 성능 측정은 FSEvents가 확장되지 않는 결론에 당신을 이끌? – cacau

+0

몇 천개의 파일을 합쳐서 몇개의 디렉토리를 추가하는 것은 걱정하지 않지만, 수천 개의 파일을 개별적으로 추가하는 것은 오버 헤드가 많은 것처럼 보입니다. 분명히 잘못된 길로 내려가려면 시간과 노력을 들이고 싶지 않습니다. – Trygve

+0

Spotlight 엔진이 파일 시스템을 모니터링하는 방법을 알고 있으면 흥미로울 것입니다. 그들이 다른/개인 API를 사용하면 놀랄 것입니다. – cacau

답변

0

:

콘텐츠의 큰 계층 구조를 모니터링하는 경우

, 당신은 커널 큐 다소 커널 이벤트보다 더 복잡 이기 때문에, 그러나, 대신 파일 시스템 이벤트를 사용해야하고, 할 수있다 추가 사용자 커널 통신 이 포함되어있어 많은 리소스가 필요합니다. 이 관련되어 있습니다.

https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/FSEvents_ProgGuide/KernelQueues/KernelQueues.html#//apple_ref/doc/uid/TP40005289-CH5-SW2

+1

fsevent watcher를 4,000 개 (따라서 4,000 개) 추가하려고하면 fseventsd : implementation_added_client : 경로/Volumes/path/to/one/of/my/files에 클라이언트를 추가하지 못했습니다. 그 다음에 콘솔에 오류가 발생합니다. 기준 : fseventsd : implementation_register_rpc : implementation_added_client() => 22 – Trygve

+0

시원하지 않아야합니다. 어떤 DTS 사건이 ..? – cacau