Hallo,
Ich muss aus einem SMB-Verzeichnis eine grosse Anzahl (>1000) von Dateien lesen. Genau genommendie Dateinamen und die Datumsinfo der Datei, keine Inhalte. Ich mache folgendes:
1. Dateien mit _FileReadToArray einlesen
2. Jede Datei im Array mit den Datumsinformationen (FileGetTime) versehen
3. Das Array dann nach dem Datum sortieren
4. Älteste Datei zurückgeben
Punkt 1 geht recht schnell, Punkt 2 braucht viel Zeit und Punkt 3 geht auch wieder schnell. Kennt jemand eine Lösung, wie ich das beschleunigen kann?
Das ist alles ziemlich zeitkritisch, da eine grosse Anzahl von Clients (>100) gleichzeitig auf den Server auf das gleiche Verzeichnis zugreift.
Danke schon einmal....
-ovik
Die zugehörige Funktion sieht folgendermaßen aus:
Code
Func _fetchParaFile_Support($SoureDirectory)
Local $aFiles = _FileListToArray($SoureDirectory, '*.txt', 1)
If $aFiles[0] > 0 Then
Local $aFileAndDate[0][2]
For $iFile = 1 To $aFiles[0] Step 1
Local $date = FileGetTime($SoureDirectory & $aFiles[$iFile], 0, 1)
_ArrayAdd($aFileAndDate, $aFiles[$iFile] & '|' & $date)
Next
_ArraySort($aFileAndDate, 0, 0, 0, 1) ;SORT ASCENDING, OLDEST FILE FIRST
Return $SoureDirectory & $aFileAndDate[0][0]
EndIf
Return 0
EndFunc
Alles anzeigen