Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 监视数千个文件的移动、删除和重命名的最佳方法?_File_Cocoa_Fsevents_Kqueue - Fatal编程技术网

File 监视数千个文件的移动、删除和重命名的最佳方法?

File 监视数千个文件的移动、删除和重命名的最佳方法?,file,cocoa,fsevents,kqueue,File,Cocoa,Fsevents,Kqueue,我有一个应用程序,它保存了一个文件数据库,这些文件位于用户的机器上,或者可能位于网络卷上,这些卷可能在线,也可能不在线。此数据库可能是位于不同文件夹中的数千个文件。当文件名更改、移动或删除时,监视它们以接收通知的最佳方式是什么 我以前在单个目录中使用过FSEvents,但我猜它不能很好地扩展到几千个单独的文件。使用KQ队列怎么样 我可能能够尝试维护一个文件夹的动态列表,试图用尽可能少的文件夹包含所有文件,但这意味着阅读完整的列表,并试图找出共同的祖先等等 想法或建议?来自苹果的文档: 如果要监视

我有一个应用程序,它保存了一个文件数据库,这些文件位于用户的机器上,或者可能位于网络卷上,这些卷可能在线,也可能不在线。此数据库可能是位于不同文件夹中的数千个文件。当文件名更改、移动或删除时,监视它们以接收通知的最佳方式是什么

我以前在单个目录中使用过FSEvents,但我猜它不能很好地扩展到几千个单独的文件。使用KQ队列怎么样

我可能能够尝试维护一个文件夹的动态列表,试图用尽可能少的文件夹包含所有文件,但这意味着阅读完整的列表,并试图找出共同的祖先等等

想法或建议?

来自苹果的文档:

如果要监视大型内容层次结构,则应使用 但是,文件系统事件,因为内核队列是 比内核事件稍微复杂一些,并且可能需要更多的资源 由于额外的用户内核通信,因此非常密集 牵涉其中


什么性能度量让您得出FSEvents无法扩展的结论?如果我添加几个目录,其中包含数千个文件,我不会担心,但是单独添加数千个文件似乎会带来很大的开销。如果它显然走错了路,我不想花费时间和精力来构建它。了解Spotlight引擎如何监视文件系统会很有趣。如果他们使用其他/私有API,我会感到惊讶。当尝试添加4000个文件(从而4000个)fsevent watchers时,我在控制台中开始出现错误:fseventsd:implementation\u added\u client:未能为path/Volumes/path/to/one/of/my/文件添加客户端,后跟:fseventsd:implementation\u register\u rpc:implementation\u added\u client() => 22