J'essaie de mettre en place deux tâches cron distinctes qui accèdent au même fichier statique. L'une des tâches s'exécute toutes les minutes, en agrégeant les nouvelles données qui sont arrivées dans le fichier. La seconde tâche s'exécute toutes les 30 minutes, analysant les données agrégées et tronquant le fichier pour le réinitialiser pour les 30 prochaines minutes.
Il est évident qu'il y a un risque de blocage toutes les 30 minutes. Existe-t-il un moyen d'écrire la tâche cron pour la première tâche de sorte qu'elle ne s'exécute que toutes les minutes pendant 29 minutes (sans énumérer toutes les minutes 1 à 60, à l'exception des 30 et 60), puis recommence à la minute 31 ? Merci !
Editar
A la demande, j'utilise PHP pour effectuer ces opérations (puisqu'il y a une utilisation importante de structures de données). J'ai implémenté l'utilisation de la fonction flock
et alors que la fonction documentation de la fonction spécifie que l'appel est bloqué jusqu'à ce que 1) le verrou soit obtenu, ou 2) l'option LOCK_NB
est spécifiée, j'ai été confus par le fait que l'exemple suivant semble impliquer qu'il est possible de ne pas obtenir le verrou, même avec un appel bloquant.
A moins que cela ne soit dû à un autre problème (permissions, interruptions du système d'exploitation, etc) ? Ce problème de blocage jusqu'à l'obtention d'un verrou était vraiment la motivation de ma question, pour voir s'il y avait un autre moyen d'éviter complètement le verrouillage des fichiers, atténuant ainsi le risque qu'une tentative de verrouillage non bloquante échoue et que le script s'arrête.