Surveiller le répertoire, puis exécuter le script PHP

Je veux surveiller un répertoire sur mon serveur à la recherche d’additions (ou de mise à jour de fichiers) et, lorsque quelque chose est ajouté, exécutez un script php.

J’ai vu qu’il y a de la watch , mais je ne sais pas exactement comment l’utiliser.

Je sais que watch -d ls -l va suivre les changements dans la liste des fichiers, mais comment puis-je diriger le fichier modifié vers un script php? Comment puis-je rechercher un fichier qui n’est pas nouveau mais mis à jour?

Puis-je exécuter ceci avec un fichier de configuration (quels répertoires, etc.) pour une configuration facile pour les utilisateurs finaux?

Vous pouvez utiliser inotifywait (à partir de inotify-tools) dans un script bash.

 while read file; do php some_script.php "$file" done < inotifywait -e create,delete,move,modify -m . --format "%w%f" $dir 

%w%f vous donnera le chemin du fichier. Si vous avez également besoin de l'événement, ajoutez %e . Pour plus d'options de format et de noms d'événements, consultez la page de manuel.

Une autre possibilité serait d'incron, mais cela nécessite un démon système.

Chaque fois que j’ai utilisé watch, il semble consumr la console actuelle / tty. Ce n’est probablement pas le meilleur outil pour créer un script php.

Une approche que je prendrais est d’avoir un script php faire la liste des répertoires, stocker dans un DB comme SQLite, etc. le rest du script incorporé. Vous pouvez avoir cron exécuter votre script php.