Newsgroup: it.comp.lang.visual-basic
Titolo: Orologio di sistema resta indietro

Ciao ragazzi.
Ho un'applicativo VB6.0 SP4, che accede ad un server MSDE locale con ADO2.7,
su un W98SE.
L'applicativo lavora pesantemente sulla seriale.
L'applicativo gira 24/24h 7/7gg.
Ho notato che l'orologio di sistema restava indietro di diversi minuti al
giorno.
Finchč era il male di qualche minuto, eseguivo un NET TIME periodico, e mi
sincronizzavo con un server in rete.
Adesso, siccome il server MSDE deve rispondere a richieste piů frequenti da
altre macchine in rete, l'orologio resta indietro di due/tre ore al giorno,
e questo č ovviamente non accettabile.
Credo che questo sia dovuto al carico di lavoro, sia sulla seriale che per
il servizio MSDE, e mi servirebbe un sistema molto leggero per sincronizzare
periodicamente l'ora di sistema con quella di un server in rete, visto che
NET TIME č molto pesante e crea una interruzione dell'elaborazione molto
fastidiosa.
In alternativa, se conoscete metodi di programmazione per evitare questo
problema, ve ne sarei molto grato!!!
Ciao e Grazie
Alberto

 problema, ve ne sarei molto grato!!!
Qui c'è un sorgente VB per risincronizzare la data:
http://www.a1vbcode.com/coderedirect.asp?type=application&ID=402
Ciao
*Roby*

 
http://www.a1vbcode.com/coderedirect.asp?type=application&ID=402
Grazie Roby.
Purtroppo, il codice va benissimo con alcuni server NTP sul web che ha già
dentro al form_load, ma non riesco a farlo andare con il mio server W2000.
Eppure, il comando NET TIME dal client esegue perfettamente, per cui non
capisco come mai.
Ho provato a modificare il Protocollo, passando da TCP a UDP, a cambiare la
porta da 37 a 123, a usare \\ prima dell'indirizzo del server, a usare l'IP
anzichè il nome, ma la richiesta resta semplicemente in attesa
all'infinito...
Non posso continuare ad eseguire NET TIME da shell, perchè veramente porta
via troppe risorse (ogni console che si apre mangia memoria, e alla chiusura
non libera tutte le risorse, per cui dopo qualche giorno il sistema è
andato...)
Se avete altre idee....
Ciao
Alberto

 dentro al form_load, ma non riesco a farlo andare con il mio server W2000.
Prova a vedere se questo risolve il tuo problema. Non è VB, ma per lo meno
ci sono anche i sorgenti:
http://sourceforge.net/projects/nettime/
Ciao
*Roby*


Ancora grazie per la solerzia.
Dopo molti test, visualizzando un log, mi sono convinto che la causa del
ritardo sia la costante interrogazione della rete per testare la data di
ultima modifica di un file.
In determinati periodi, il PC dove si trova il file da monitorare viene
spento, per cui il FileSystemObject resta 'appeso' alcuni secondi a tentare
di collegarsi in rete.
Ho notato che i rallentamenti dell'orologio avvengono nei periodi in cui il
FSO non trova il target.
A questo punto, ho provato sia Folderexists, sia Driveexists, ma i timeout
sono gli stessi, ed immagino anche l'errore indotto all'orologio.
La vecchia routine con l'ON error che testava la presenza di un file
cercando di aprirlo ha un timeout leggermente superiore, per cui ancora
peggio.
A questo punto, non mi resta che tentare con l'utility di Roby, con un
polling del server ogni n minuti...
Ciao e grazie
Alberto

 FSO non trova il target.
Siccome č un problema di timeout, č possibile che il ritardo accumulato per
ogni interrogazione sia fisso.
Se č cosě, puoi vedere di ritoccare tu il valore del timer di questo "tot"
che va perso, ogni volta che la DriveExists ti ritorna False.
Si tratta di fare qualche prova salvando il valore di timer prima della
chiamata, e controllare quanto vale dopo, confrontandolo col tempo
effettivamente trascorso.
Certo che č una bella situazione di palta. :-(
Ciao
*Roby*

 ha scritto nel messaggio
news:a3oitg$jqu$1...@newsreader.mailgate.org...


 NET TIME è molto pesante e crea una interruzione dell'elaborazione molto


 non è che invece la batteria della scheda madre è scarica?
Dimenticavo che il problema si verifica su due PC nuovi, ed ha iniziato a
verificarsi all'aumentare del carico di lavoro dovuto ad una nuova release
del software...
Alberto


In effetti ho riscontrato quanto da te detto, ossia:
1) All'avvio del sistema, l'ora è corretta
2) Dopo ore o giorni, l'ora è rimasta indietro anche di diverse ore.
3) Riavviando il sistema, l'ora torna a posto
Ho annotato alcuni altri indizi interessanti:
A) Il ritardo dell'orologio è indipendente dal carico sulle seriali. Avviene
anche commentando tutta la parte su seriale
B) Il ritardo avviene su qualunque PC, quindi non è la batteria
C) Il ritardo si accumula quando vengono spenti dei PC di rete sui quali
risiedono file di testo che l'applicazione cerca continuamente.
Per il momento, ho attivato ogni 8 ore un net time con un altro PC su cui
gira un'applicazione che non dà problemi di orario.
E' quindi corretto quanto dicevi:
Occorre periodicamente andare a leggere direttamente il chip dell'orologio,
e reimpostare l'ora di Windows con quella hardware, che sembra perfetta.
Il problema è che non ho trovato la libreria WIN95IO sul sito comune.
Sei sicuro che si chiami così??
Alberto

Non ci crederai, ma l'ho trovata adesso.
Se comunque mi dici quella per NT sarebbe gradito.
Ciao e grazie
Alberto

 ha scritto nel messaggio
news:a4tn7i$fp9$1...@newsreader.mailgate.org...
