in reply to system-clock-safe timers without time()?
Why not just teach your server admin(s) to sync their clocks using NTP? Then you don't have a problem.....
As to the approach I would probably run a demon that just did:
#!/usr/bin/perl my $start = time(); my $sleep = 600; my $how_much = 5; my $offset_file = '/tmp/offset.txt'; my $offset = 0; print_to_file( $offset ); while ( 1 ) { sleep($sleep); my $now = time(); if ( abs ( $start + $sleep - $now ) > $how_much ) { $offset = $start + $sleep - $now; print_to_file( $offset ); } $start = time(); } sub print_to_file { my $offset = shift; `echo $offset > $offset_file`; }
In this approach we allow use 5 seconds of change in 10 minutes as our significance level. If the time has changed by more than this then someone has probably changed the clock so we write the offset to the offset file.... This is the general approach used by time limited software for instance that gets upset if you change the clock.
Just check the offset file as needed. This should be less load and is not dependent on sleep(1) being exactly 1,000 msec. If it is not your clock will drift considerably over time.
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: system-clock-safe timers without time()?
by hatter (Pilgrim) on Apr 13, 2003 at 17:21 UTC |