簡體   English   中英

目錄監控

[英]directory monitoring

檢查添加到目錄中的新文件的最佳方法是什么,我不認為filesystemwatcher是合適的,因為這不是一個始終在線服務,而是一個在我的程序啟動時運行的方法。

我正在監視的文件夾結構中有超過20,000個文件,目前我正在單獨檢查每個文件以查看文件路徑是否在我的數據庫表中,但是這需要大約十分鍾而且我想加速它是可能的,

我可以存儲上次檢查文件夾的日期 - 是否可以輕松獲取所有具有createddate的文件>上次檢查日期。

誰有任何想法?

謝謝

標記

您的方法是唯一可行的(即文件系統觀察程序允許您查看更改,而不是檢查啟動)。

找出需要這么長時間的事情。 20.000次檢查不應該花費10分鍾 - 最多可能是1分鍾。 你的程序寫得很慢。 你是如何測試的?

提示:不要問數據庫,將所有文件列表放入內存,列出所有文件的數據庫,檢查內存。 20.000對數據庫的SQL語句太慢,這種方式需要ONE來獲取列表。

對於20,000個文件,10分鍾似乎非常長。 你打算做比較怎么樣? 您的建議也不考慮已刪除的文件。 如果要從數據庫中刪除它們,則必須進行完整比較。

也許問題是數據庫往返。 您可以按大塊(或一次全部)從數據庫中檢索已知文件列表,按字母順序排序。 對本地文件列表進行排序並遍歷兩個列表,處理丟失或新條目。

FileSystemWatcher 可靠 ,因此即使您可以使用某項服務,它也不一定適合您。

我能看到的兩個選項是:

  1. 保留您知道的文件列表,並與此列表進行比較。 這將允許您查看文件是否已添加,刪除等。將此列表保留在內存中,而不是查詢每個文件的數據庫。
  2. 如您所知,存儲時間戳並與之進行比較。

您可以在某處創建onfile創建的最后一個時間戳,它很簡單,可以為您工作。

你能寫一個在那台機器上運行的服務嗎? 然后,該服務可以使用FileSystemWtcher

擁有像Kevin Jones這樣的FileSystemWatcher服務可能是最實用的答案,但還有其他一些選擇。

如果在Linux機器上使用Samba掛載目錄,可以使用inotify查看目錄。 那當然假設您不介意分割您的平台,但這就是inotify的用途。

然后更正確,但相應地減少獲得批准的機會,如果你正在監視一個包含20K文件的目錄,那么可能是時候改進你的系統架構了。 不太了解您的應用程序,聽起來像消息隊列可能值得一看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM