@@ -, +, @@ lockfile whilst process_message_queue.pl is being executed --- misc/cronjobs/process_message_queue.pl | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) --- a/misc/cronjobs/process_message_queue.pl +++ a/misc/cronjobs/process_message_queue.pl @@ -28,6 +28,11 @@ BEGIN { use C4::Letters; use C4::Log; use Getopt::Long; +use MIME::Lite; +use Mail::Sendmail; +use Encode; + +use Fcntl ':flock'; my $username = undef; my $password = undef; @@ -68,6 +73,29 @@ die $usage if $help; cronlogaction(); +print "start of program\n"; + +my $file = "/tmp/messagequeue.lock"; +open(FOO, ">> $file") or die "Cannot write to $file: $!"; +print "Getting the lock\n"; + +unless (flock ( FOO, LOCK_EX|LOCK_NB )) { + print "$0 is already running. Exiting.\n"; + + #Send email to inform administrator another process_message_queue.pl cron was attempted to run whilst previous execution of the file is taking place. + # Configure accordingly + my $email = MIME::Lite->build( + To => ' ', + From => ' ', + Type => 'TEXT', + Subject => 'process_message_queue.pl cron is already running', + Data => 'process_message_queue.pl cron is already running', + contenttype => 'charset="UTF-8"', + ); + $email->send('smpt', ' '); + exit(1); +} + C4::Letters::SendQueuedMessages( { verbose => $verbose, @@ -79,3 +107,6 @@ C4::Letters::SendQueuedMessages( } ); +print "sleeping 15..\n"; +sleep(15); +print "End of process_message_queue.pl cron process"; --