Project

General

Profile

CronJobs » History » Version 6

Simon, 10/02/2023 04:01 PM

1 1 Simon
h1. CronJobs
2
3 2 Simon
Depuis la version 1.8, Linea21 permet de planifier l’exécution de tâches de manière automatique (par exemple pour l'envoi d'emails, ou la réalisation d'une sauvegarde, ...)
4 1 Simon
5 2 Simon
h2. Configurer l’exécution de tâches automatiques
6
7
La première étape est de configurer l'appel au script fourni par Linea21. Il se situe dans le répertoire /admin/.
8
9
Vous devez pour cela créer un nouveau cronjob. Référez-vous à la "documentation":http://doc.ubuntu-fr.org/cron.
10
11
Ajoutez l'une des deux instructions suivantes :
12
<pre>
13
<code>
14 3 Simon
* * * * * /usr/bin/php /var/www/linea21/admin/cron.php token=your_token_id
15 2 Simon
</code>
16
</pre>
17
18
ou (au cas où la première ne fonctionnerait pas) :
19
20
<pre>
21
<code>
22 3 Simon
* * * * * /usr/bin/curl http://www.mondomaine.tld/admin/cron.php?token=your_token_id
23 2 Simon
</code>
24 1 Simon
</pre>
25
26 3 Simon
*Le token correspond à la valeur de la constante SECRET_KEY disponible dans votre fichier de configuration (/config/config.ini).*
27 2 Simon
28 3 Simon
L'instruction @* * * * * @ indique que le script est exécuté par cron chaque minute. Vous pouvez changer cette caractéristiques en modifiant la valeur. Par exemple, @*/10 * * * * @ exécutera le script chaque 10 minutes. Pour en savoir plus sur la syntaxe CRON, consultez la page Wikipedia : http://en.wikipedia.org/wiki/Cron.
29 1 Simon
30 3 Simon
*Remarque :* Assurez-vous de la cohérence de la fréquence d'appel avec les différents cronjobs mise à disposition de l'application, sans quoi, ils ne seront pas exécutés.
31 2 Simon
32
33 3 Simon
34 2 Simon
h2. Cronjobs par défaut
35
36
Par défaut, l'application exécute 2 cronjobs :
37
38
* l'envoi de la newsletter (chaque nuit, à 00h00)
39
* le traitement de la queue d'emails (chaque 10 minutes)
40
41
<pre>
42
<code>
43
@daily ../newsletter/send.php
44
*/10 * * * * ../mail/process_queue.php
45
</code>
46
</pre>
47
48
49
h2. Localisation des Cronjobs
50 1 Simon
51
Le script _/admin/cron.php_ exécute les cronjobs situés dans le répertoire '/config/cron/'.
52 2 Simon
53
Nous vous recommandons de ne pas modifier le fichier '/config/cron/1_default' qui comporte les tâches à exécuter par défaut et qui sera écrasé en cas de mise à jour de l'application.
54
55 3 Simon
Si vous souhaitez ajouter des cronjobs, il est recommandé de créer un (ou plusieurs) nouveau(x) fichier(s).
56 2 Simon
57 3 Simon
L'application s'assure qu'un cronjob n'est exécuté qu'une seule fois seulement par appel. Vous pouvez donc modifier le comportement d'un cronjob fourni par défaut par l'application en le dupliquant dans un fichier dont le nom commence par '0' (l'exécution se fait par ordre alphabétique).
58 2 Simon
59
Exemple d'un fichier nommé '/config/cron/0_user' :
60 1 Simon
61 2 Simon
<pre>
62
<code>
63
*/30 * * * * ../mail/process_queue.php
64
</code>
65
</pre>
66 1 Simon
67 3 Simon
Dans cette configuration, l'application traitera la queue d'emails non plus chaque 10 minutes (comportement par défaut) mais chaque demi-heure comme défini par l'utilisateur.
68 1 Simon
69
70
h2. Cronjobs et override
71
72
L'exécution des tâches planifiées supporte l'override. Cela signifie que vous pouvez créer votre propre script pour modifier le comportement d'une tâche existante.
73
74 3 Simon
Par exemple, l'instruction @*/10 * * * * ../mail/process_queue.php@ exécutera le script '_/templates/admin/montheme/override/mail/process_queue.php_' s'il est défini.
75 1 Simon
76 3 Simon
h2. Créer de nouveaux cronjob
77 1 Simon
78 3 Simon
79 4 Simon
Dans le cadre de la création de nouveaux cronjobs, vous pouvez tester vos scripts de 2 façons :
80 3 Simon
81
* directement depuis votre navigateur, en appelant la page  http://www.mondomaine.tld/admin/cron.php?token=your_token_id
82
* ou bien en appelant le script depuis un terminal :
83
84 1 Simon
<pre>
85 2 Simon
<code>
86 3 Simon
/usr/bin/curl http://www.mondomaine.tld/admin/cron.php?token=your_token_id
87 2 Simon
</code>
88
</pre>
89 5 Simon
90
h2. Cronjobs et contraintes liées à l'hébergement, une nécessaire adaptation
91
92
Certains hébergeurs ne permettent qu'un appel limité aux cronjobs. A titre d'illustration, *OVH exécutera le script cron qu'une fois par heure seulement.*
93
94
Par ailleurs, OVH lui-même ne permettra pas de choisir à quelle minute précise se fait l'envoi. Il attribuera une valeur aléatoire. Aussi, il est nécessaire de reprendre le script par défaut :
95
96
Si OVH exécute l'instruction : `53 * * * * www/admin/cron.php`, il sera nécessaire d'adapter / dupliquer le script par défaut.
97
Dans ce cas, copiez-collez cron/1_default vers le fichier cron/0_default en modifiant la valeur de la fréquence d'appel : 
98
99
Version originale : 
100
101
<pre>
102
@daily ../newsletter/send.php
103
@daily ../project/task-reminder.php
104
*/10 * * * * ../mail/process_queue.php
105
</pre>
106
107
Version modifiée : 
108
109
<pre>
110
53 2 * * * ../newsletter/send.php
111
53 7 * * * ../project/task-reminder.php
112
53 * * * * ../mail/process_queue.php
113
</pre>
114
115
* Première ligne : envoi de la newsletter (si nécessaire) chaque nuit à 2h53
116
* Deuxième ligne : envoi des rappels de tâches chaque matin à 7h53
117
* Troisème ligne : traitement de la queue d'emails à une fréquence de une - toujours effectué à la minute 53
118
119 6 Simon
*Besoin d'aide ? Voir https://crontab.guru*