Hej, Ska du söka efter något som förekommer i filnamnet eller i själva filen? ursäkta för det. Det ska vara i början på filnamnet . Menar du ASP eller ASP.NET? Här kommer ett exempel som jag klippte ihop för ASP (otestat): Jo detta är ju en vanlig lösning. Som jag skrev ovan så gäller det en snabb applikation för över 1000 filer. Ifall du bara har 1000 filer och bara behöver söka på filnamn, misstänker jag starkt att massa db/indexerat är overkill. (Xml gör ju inte saken bättre) Hur lång tid får det maximalt ta och hur lång tid tar det med denna metoden? Svar till person två svar ovan. Självklart är det fel i hur vi hanterar detta. Detta gäller en kund som idag ej kan hantera vissa av sina filer på annat sätt. Då får man acceptera och finna en lösning. Om kunden inte har ett internt system som kan hantera det får vi hitta lösningar. Det kan också komma att nå över 2000 filer. Förutom detta så hanterar denna webbplats ca 30 000 unika besökare per månad och är på 10 olika språk så därför är prestanda väldigt viktigt. Testade en vanlig asp-sökning. I detta fallet skulle jag nog lagt filnamnen i en databas, känns som den metod som är enklast att implementera. Kanske inte mest optimalt ur prestandasynpunkt, men det borde vara fullt tillräckligt tycker jag. Det bästa vore nog om du när du söker fram alla filerna plockar fram artikelnumret och lägger i en separat kolumn i databasen. 25 sekunder för att loopa igenom 1000 filer i ett asp-script.. det låter väldigt mycket.. det måste ju vara nåt allvarligt problem med den servern.. t.ex. nåt antivirus program eller liknande som stör prestandan.. <b>25 sekunder för att loopa igenom 1000 filer i ett asp-script.. det låter väldigt mycket.. </b> Jag har lite svårt att fatta exakt vad du är ute efter Robert.Sökning av många filer
Vi har ett projekt där ca 1000 PDF-filer kommer att föras över via FTP någon gång i veckan.
Jag ska själv bygga en väldigt snabb applikation som kan söka igenom dessa filer efter en specifik fil som börjar med ett specifikt ID. Det ska vara en webbapplikation i ASP som ska hämta den specfika filen.
Jag har funderingar på två lösningar:
- Microsoft Indexeringstjänst som jag söker via. Jag vet inget om det, men har hört att det ska vara bra. Ideer på hur man löser det?
- En Windowsapplikation som genererar XML-fil alt. skriver till databas information om alla filer och sedan gör ASP-sökningen mot det.
Andra ideer?
Vad tror ni?Sv: Sökning av många filer
/JohanSv:Sökning av många filer
ArtikelnrXXX.pdfSv: Sökning av många filer
<code>
SokOrd = "Artikelnr1234"
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\MinMapp\")
For Each File In objFolder.Files
If (Left(File.Name, Len(SokOrd))) = SokOrd Then
'hittad
End If
Next
Set objFolder = Nothing
Set objFSO = Nothing
</code>
/JohanSv:Sökning av många filer
- Användaren kommer att klicka på en länk och baserat på valet så kommer alla filer visas som innehåller ett visst artikelID.
Det är därför jag behöver göra sökningen i DB, XML alt. indexerat.Sv: Sökning av många filer
Fixa sedan ifall du har problem, efter att du har profilerat att felet ligger just där.
"Premature optimization is the root of all evil" eller hur det nu var...Sv: Sökning av många filer
/JohanSv:Sökning av många filer
Det ska reagera som ett vanligt webbklick (ca 1-2 sek max).Sv: Sökning av många filer
Tar ca 20 - 25 sekunder att söka igenom filens namn. Så detta är uteslutet.Sv:Sökning av många filer
/JohanSv:Sökning av många filer
Ur prestandasynpunkt kan det nog vara en bra idé ändå att stoppa in filnamnen i en databas.
Splitta upp så du får identity, artikelnummer, filnamn, fullpath, indexera artikelnr. Det blir bra.
Tänk också på att NTFS (Windows filsystem) får stora problem med prestandan om man har väldigt många filer i en mapp (tiotusentals).. alltså är det en bra idé att dela in mapparna i år/månad/dag
T.ex, D:\PDF\2007\04\11\dokument1234567.pdfSv: Sökning av många filer
Instämmer, det låter alldeles för mycket. Nåt måste vara på tok...
Jag har testat detta som en jämförelse på en dator med virusskydd påslaget SAMT krypterad hårddisk. Projektet har varit en winapp som releasekompilerades och som bara har haft en knapp med koden nedan
<code>
DateTime start = DateTime.Now;
string[] files = System.IO.Directory.GetFiles("c:\\temp\\downloads", "*.doc", SearchOption.TopDirectoryOnly);
DateTime end = DateTime.Now;
MessageBox.Show(files.GetLength(0).ToString() + Environment.NewLine +
((TimeSpan)(end - start)).TotalMilliseconds.ToString());
</Code>
I katalogen ligger 319 filer (och 116 underkataloger) och sökningen för att hitta 5 filer som matchar har som mest tagit 10 millisekunder.
Ändrar jag raden som gör sökningen till
<code>
string[] files = System.IO.Directory.GetFiles("c:\\temp\\downloads", "*.doc", SearchOption.AllDirectories);
</code>
Så kommer den att söka igenom totalt 11476 filer i 2756 underkataloger, det tar mellan 1,5 sekunder - 50 sekunder (oftast runt 1,5 sekunder och någon enstaka gång har det varit 50 sekunder).Sv: Sökning av många filer
Du talar om att : " ca 1000 PDF-filer kommer att föras över via FTP någon gång i veckan. "
jag tänker: ok, här snackar vi major batch körning vid enstaka tillfälle...
Du talar om att : "Jag ska själv bygga en väldigt snabb applikation som kan söka igenom dessa filer efter en specifik fil som börjar med ett specifikt ID." och att dom har formatet "ArtikelnrXXX.pdf"
jag tänker: ok, unika filnamn med fasta prefix och löpande ID, klockren namnkonventionering!
Du talar om att :
- Användaren kommer att klicka på en länk och baserat på valet så kommer alla filer visas som innehåller ett visst artikelID.
jag tänker: goddamn! vad hände med batchkörningen? och va inte artikelID unikt? och då tillåts bara 1 fil under den namnkonventioneringsprincip du själv deklarerat! no?
jag tänker vidare: Han kanske vill ha nån typ av relationsobjekt där filer ligger lagrade i nån tabell eller databas. Visst men vem parar ihop filerna som ska associeras med varann under typ gemensam hälft av sammansatt nyckel?
Alltså:
A) Vad är det för batchkörning?
B) och hur vet man vilka filer som hör ihop?
(1 brödrost i potten till först inkommna korrekta svar)