J'ai écrit un script php pour vérifier s'il y a de nouveaux fichiers dans un dossier et, si de nouveaux fichiers existent, les télécharger sur un serveur. Ces fichiers peuvent être assez volumineux. Je veux exécuter ce script fréquemment - disons toutes les 5 min - comme une tâche planifiée afin que les fichiers soient déplacés vers le serveur dès que possible. Cependant, une fois que le script tente déjà de télécharger un fichier, je ne souhaite pas qu'il soit exécuté à nouveau, car je crains que la deuxième instance n'écrase le fichier qui est déjà en cours de téléchargement sur le serveur.
Comment puis-je exécuter le script en tant que tâche planifiée à moins que le script ne soit déjà en cours d'exécution?
la source
La manière habituelle est de tester une chose globale (souvent un fichier vide spécifique) lorsque la tâche démarre. S'il existe, la tâche est déjà en cours d'exécution. Si ce n'est pas le cas, définissez le truc global, faites votre travail, désactivez le truc global lorsque la tâche est terminée.
Cela a des problèmes si la tâche échoue sans perturber le truc global. Vous souhaiterez peut-être toujours le désactiver dans la routine de démarrage de l'ordinateur car la tâche ne peut pas être exécutée si vous avez redémarré. Mieux vaut trouver un truc global qui disparaît automatiquement à la fin de la tâche.
la source