CLI et scheduler · Question 9 sur 12
Une commande d'import est lancée par cron chaque minute, mais une exécution peut durer plus longtemps. Deux exécutions ne doivent jamais travailler en même temps. Comment l'empêcher avec les moyens de TYPO3 ?
1 réponse est correcte. Moyen
Afficher la solution
Solution
- D Créer un locker avec LOCK_CAPABILITY_EXCLUSIVE | LOCK_CAPABILITY_NOBLOCK via la LockFactory, tenter acquire() et quitter immédiatement en cas d'échec
Explication
La LockFactory choisit une stratégie de verrouillage adaptée (fichier, sémaphore, …). Avec NOBLOCK, acquire() revient immédiatement au lieu d'attendre, de sorte que la seconde exécution peut se terminer proprement. À la fin, release() libère le verrou. Un flag maison dans le registry subsiste après un plantage et n'est pas atomique. Pour les tâches du scheduler, il existe en plus le réglage d'exécution parallèle.