L'appel de tâches asynchrones est nécessaire pour :
- la mise à jour des index
- l'expiration des tickets fermés mais non approuvés par les utilisateurs
- l'archivage des tickets fermés
- le rappel automatique des tickets reportés
Cette page propose une méthode de mise en place des appels asynchrones.
Sous Unix
Nous supposons ici que tous le répertoire de base du projet est /usr/local/helpdesk.
[root@server helpdesk]# ls -al total 96 -rwxr-xr-x 1 root root 78 2008-06-16 12:37 env.sh (version courante) drwxr-xr-x 2 root root 69632 2008-05-21 12:22 files (fichiers attachés) -rwxr-xr-x 1 root root 567 2008-03-28 10:16 helpdesk-cron.sh (script d'appel des tâches asynchrones) -rwxr-xr-x 1 root root 292 2008-03-28 10:16 helpdesk.sh (script d'appel des tâches synchrones) drwxr-xr-x 2 root root 4096 2008-06-18 11:50 index (indexation) drwxr-xr-x 2 root root 4096 2008-06-17 06:08 log (traces d'exécution) drwxr-xr-x 19 root root 4096 2008-06-16 12:38 src (sources des distributions)
Le fichier env.sh contient la version courante :
#/bin/bash . /etc/profile.d/java.sh export ESUP_HELPDESK_VERSION=3.0.1
Le script helpdesk.sh sert à l'appel des tâches synchrones (start, stop, deploy, ...) :
#!/bin/bash . /usr/local/helpdesk/env.sh echo Esup-Portail Helpdesk $ESUP_HELPDESK_VERSION, running ant task $1 pushd /usr/local/helpdesk/src/esup-helpdesk-quick-start-$ESUP_HELPDESK_VERSION > /dev/null ant $1 popd > /dev/null
Le script helpdesk-cron.sh sert à l'appel des tâches asynchrones (update-index, archive-tickets, recall-tickets, ...) :
#!/bin/bash . /usr/local/helpdesk/env.sh [ -z "$1" ] && { exit 1; } export LOG_FILE=/usr/local/helpdesk/log/$1.log echo ----------------------------------------------- >> $LOG_FILE date >> $LOG_FILE echo Esup-Portail Helpdesk $ESUP_HELPDESK_VERSION, running ant task $1 >> $LOG_FILE pushd /usr/local/helpdesk/src/esup-helpdesk-quick-start-$ESUP_HELPDESK_VERSION > /dev/null ant $1 >> $LOG_FILE popd > /dev/null
Les appels des tâches asynchrones sont réalisés grâce à l'insertion des lignes suivantes dans le fichier /etc/crontab :
00,05,10,15,20,25,30,35,40,45,50,55 * * * * root /usr/local/helpdesk/helpdesk-cron.sh update-index 02 * * * * root /usr/local/helpdesk/helpdesk-cron.sh expire-tickets 03 * * * * root /usr/local/helpdesk/helpdesk-cron.sh archive-tickets 01 0 * * * root /usr/local/helpdesk/helpdesk-cron.sh recall-tickets