Says
kschwab:
Something like:
while (1) {
$mtime=(stat($data_file . $$))[9];
# drop out of the loop if the file hasn't
# changed in 5 minutes (perhaps longer
# for a wan connection ?)
last if (time > $mtime + 300);
}
That is a busy-wait loop. Even if the
loop runs only once, you have called stat one million times
and run up the load on the system for five minutes.
Try it like this:
my $old_mtime = (stat($file))[9];
if (time <= $old_mtime + 300) {
while (1) {
sleep 300;
my $new_mtime=(stat($file))[9];
last if $old_mtime == $new_mtime;
$old_mtime = $new_mtime;
}
}