Quel module CPAN à utiliser pour le verrouillage de fichiers non bloquante avec Perl
-
27-09-2019 - |
Question
Je veux vous assurer qu'un seul processus à un court temps. Donc, je veux vous assurer que Jobb ne fonctionne pas à moins que Joba ne fonctionne pas.
Il serait grand si elle avait une certaine capacité de retenter la serrure, donc je n'ai pas à code. Quelque chose vaguement comme ceci:
LockFileModule->lock(
lockfile => '/fabulous/pants',
retries => 12,
timeout => 25,
timebetweenretries => 30,
) or die "the other job is still running";
Quelle est la meilleure façon de le faire en Perl? J'espère qu'il ya un bon module CPAN pour cela.
La solution
#!/usr/bin/perl
unless (flock(DATA, LOCK_EX|LOCK_NB)) {
$logger->info("$0 is already running. Exiting.\n" );
exit(1);
} else {
$logger->info("$0 not already running, so starting instance now." );
}
__DATA__
Do not delete this. Used for flock code above
Ceci verrouillera la section DATA du programme lui-même. J'utilise cette technique, et il fonctionne très bien.
Vous pouvez l'étendre pour permettre assez facilement relances.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow