Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413

    controllo incrociato file esistenti, file su db

    ciao a tutti...(o auguri a tutti....)

    nel mio sito ho all'ingresso di una pagina di inserimento foto, un controllo incrociato tra file jpg esistenti sul server, e nomi degli stessi file jpg sul db...

    se esiste il file, ma non è scritto sul db, la routine lo cancella...

    ho notato però che all'aumentare dei record, corrisponde una (evidente) lentezza nell'apertura della pagina.

    c'è un modo per velocizzare la routine?
    ve la posto:

    codice:
    set recset=server.CreateObject("ADODB.recordset")
    strSQL="SELECT percorso FROM immagini"
    recset.open strSQL,conn,3,3
    if recset.recordcount then
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set folderObject = fso.GetFolder(Server.MapPath("\img")) 
    Set filesObject = folderObject.Files 
    for Each files In filesObject 
    	recset.movefirst
    	file_trovato=false
    	do while not recset.eof
    	if recset("percorso")<>"" then
    		nome_file=split(recset("percorso"),"/")
    		if nome_file(ubound(nome_file))=files.name then
    			file_trovato=true
    		end if	
    	end if
    	recset.movenext
    loop
    if file_trovato=false then
    	
    	FSO.DeleteFile(Server.MapPath("/img")&"\"&files.name)
    end if
    Next 
    	Set fileObject = Nothing 
    	Set folderObject = Nothing 
    	Set fso = Nothing

  2. #2
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    sostituisci queste due


    recset.open strSQL,conn,3,3
    if recset.recordcount then



    con queste altre


    recset.open strSQL,conn,1,1
    if not recset.eof then



    comunque la lentezza sarà dato amche dal filesystem
    cerca di far girare la procedura quando il server è poco usato; in questo caso quando la CPU è poco sollecitata
    Tutti vogliono parlare, nessuno sa ascoltare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413
    grazie della risposta...

    cosa cambia nelle tue righe rispetto alle mie (a livello logico intendo)

    e come posso capire quando la CPU è poco sollecitata...?

  4. #4
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    nel mio codice il recordset è aprto in modo statico, e quindi assorbe meno risorse (vedi www.adopenstatic.com per capirne qualcosa in più ) Circa la CPU: se il PC è tuo, quando lanci il controllo, vedi di non avere aperti altri programmi. se sei in hosting, fai girare quando presumi ci sia meno traffico (sui server italiani la notte o la mattina presto...)
    Tutti vogliono parlare, nessuno sa ascoltare.

  5. #5
    vedo qualche problema di logica....

    1. se il recordset e' vuoto, dovresti cancellare TUTTI i files nella cartella.

    2. tutte le volte che leggi un file, rifai il giro del recordset: probabilmente usando una combinazione di .filter e .recordcount (o .EOF) dovresti essere piu' veloce quando hai molti files

    3. se invece vuoi continuare a usare il ciclo, non appena trovi il file (se lo trovi) esci dal ciclo con exit do: una volta trovato e' infatti inutile testare quelli successivi

    4. una ulteriore alternativa potrebbe essere quella di caricare la lista dei files registrati nel db in una unica stringa, separando i records con il simbolo pipe ("|") e cercando poi il singolo file (racchiuso tra due pipe) con INSTR (questo dovrebbe essere il metodo piu' veloce)


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.