CronLocking

Uit MoodleDocs
Versie door Pieterjan Heyse 2 (overleg | bijdragen) op 15 mei 2007 om 11:58
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Ga naar:navigatie, zoeken

Als je meerdere webservers hebt die dezelfde moodle omgeving aanbieden, dan kan je ervoor zorgen dat er maar 1 cron script tegelijk draait door cron.php aan te roepen vanuit volgend shellscript:

#!/bin/sh
my_lockfile()
{
       TEMPFILE="$1.$$"
       LOCKFILE="$1"
       echo $$ > $TEMPFILE 2>/dev/null || return 1
       if ln $TEMPFILE $LOCKFILE 2>/dev/null; then
               rm -f $TEMPFILE
               return 0
       fi
       STALE_PID=`< $LOCKFILE`
       test "$STALE_PID" -gt "0" >/dev/null || return 1
       if kill -0 $STALE_PID 2>/dev/null; then
               rm -f $TEMPFILE
               return 1
       fi
       rm $LOCKFILE 2>/dev/null
       if ln $TEMPFILE $LOCKFILE 2>/dev/null; then
               rm -f $TEMPFILE
               return 0
       fi
       rm -f $TEMPFILE
       return 1
}
until my_lockfile pad_naar_uw_lockfile ; do
       sleep 1
done 
php pad_naar_uw_cron.php
rm -f pad_naar_uw_lockfile