@@ -, +, @@ is running --- misc/cronjobs/process_message_queue.pl | 42 +++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) --- a/misc/cronjobs/process_message_queue.pl +++ a/misc/cronjobs/process_message_queue.pl @@ -28,6 +28,7 @@ BEGIN { use C4::Letters; use C4::Log; use Getopt::Long; +use C4::Context; my $username = undef; my $password = undef; @@ -35,6 +36,14 @@ my $method = 'LOGIN'; my $help = 0; my $verbose = 0; +use MIME::Lite; +use Mail::Sendmail; +use Encode; +use Net::SMTP; + +use Fcntl ':flock'; + + GetOptions( 'u|username:s' => \$username, 'p|password:s' => \$password, @@ -63,5 +72,36 @@ die $usage if $help; cronlogaction(); -C4::Letters::SendQueuedMessages( { verbose => $verbose, username => $username, password => $password, method => $method } ); +print "start of program\n"; +my $logdir = C4::Context->config('logdir'); + +chomp $logdir; +my $instancemessagequeuefile = $logdir . "/messagequeue.lock"; +open(FOO, ">> $instancemessagequeuefile") or die "Cannot write to $instancemessagequeuefile: $!"; + +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 +MIME::Lite->send( 'smtp', ''); +my $email = MIME::Lite->new( +To => ' ', +From => ' ', +Type => 'TEXT', +Subject => 'process_message_queue.pl cron is already running', +Data => 'process_message_queue.pl cron is already running', +); + +$email->attach( +Type => 'Text', + Data => 'process_message_queue.pl cron is already running', +); +$email->send(); +exit(1); +} + +C4::Letters::SendQueuedMessages( { verbose => $verbose, username => $username, password => $password, method => $method } ); +sleep(15); +print "End of process_message_queue.pl cron process"; --