@@ -, +, @@ is running --- misc/cronjobs/process_message_queue.pl | 49 +++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 9 deletions(-) --- 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; @@ -37,6 +38,14 @@ my $help = 0; my $verbose = 0; my $type = q{}; +use MIME::Lite; +use Mail::Sendmail; +use Encode; +use Net::SMTP; + +use Fcntl ':flock'; + + GetOptions( 'u|username:s' => \$username, 'p|password:s' => \$password, @@ -68,14 +77,36 @@ die $usage if $help; cronlogaction(); -C4::Letters::SendQueuedMessages( - { - verbose => $verbose, - username => $username, - password => $password, - method => $method, - limit => $limit, - type => $type, - } +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"; --