Spesso, ci ritroviamo, un sito che all'inizio della sua "carriera" era veloce, ed affidabile, ma col passare del tempo, e con la crescita dello stesso ( e della community ), si ritrova ad essere sempre piu' lento e/o pesante.
Molte volte, cio' che accade, non e' a causa della "vecchiaia" dei nostri script, ma perche' il nostro db, ha bisogno di una rispolverata in modo da snellirsi e diventare piu' veloce.
Ecco quindi, che si pensa subito :
- Scarico il database - Lo apro con Access - Vado in Strumenti -> Utilita' Database -> Compatta - Re inserisco il db sul sito
Beh... un operazione e' piuttosto noiosa, non trovate? Questo, oltre a farci perder tempo, ci riporta anche dei problemi del tipo : " e se qualcuno ha aggiunto/modificato qualche dato/commento mentre io facevo questa operazione" ?
E allora, perche' non cercare di creare uno script che faccia questo compito automaticamente e senza dover trasferire 2 volte il db ( 1 volta in download ed 1 in upload ) ?
Vediamo un po'come :
|
<% Function CompattaDB(dbname, password)
'percorso del db percorsodb = Server.MapPath(dbname)
'Creiamo una connessione al db e una connessione ad un db temporaneo Dim cnfrom, cnto cnfrom = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&dbpath cnto = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&dbpath&".temp"
'se il db è protetto da password... If password<>"" Then cnfrom = cnfrom&";Jet OLEDB:Database Password="&password cnto = cnto&";Jet OLEDB:Database Password="&password End If
Dim engine Set engine = Server.CreateObject("JRO.JetEngine") 'compatta il database engine.CompactDatabase cnfrom, cnto
Dim fso Set fso = Server.CreateObject("Scripting.FileSystemObject") 'il db originale lo elimino fso.DeleteFile percorsodb ' Rinomino ildb temporaneo con il nome del db originale fso.MoveFile percorsodb&".temp", percorsodb
'Libero le risorse Set fso = nothing Set engine = nothing End Function %>
|
Per facilita', ho scritto lo script in una funzione. In questo modo, quando vorro' richiamarlo, bastera' creare una pagina contenente il seguente codice :
<% 'chiamo la funzione per la compressione del database Call CompattaDB("nomedb.mdb", "") Response.Write("Il DataBase è stato compattato con successo!") %>
|
I parametri che la funzione accetta sono :
- dbname: il nome del database - password: l'eventuale password con cui è protetto il database. (facoltativa)
Bello no? :)
Alla prossima!! |