2 votes

Comment vérifier si un fichier EST utilisé, c'est-à-dire si une commande est exécutée sur les données de ce fichier ?

Je dois écrire un programme qui vérifie si un répertoire particulier de mon dossier contient des fichiers (d'une extension spécifique), et s'il trouve des fichiers, il les lit un par un et charge les données de ceux-ci dans une base de données.

C'est l'algorithme brut dans mon esprit :

  1. En utilisant une infinité while() vérifie continuellement si le répertoire contient des fichiers de cette extension particulière (par exemple, vérifie si le répertoire contient des fichiers de type *.xml ). Je peux utiliser le programme PHP glob() función.

  2. Si oui, alors dans un foreach boucle, lire les données de chaque fichier et les charger dans la base de données.

  3. Une fois que les données d'un fichier ont été chargées, il faut le supprimer.

Ma question :

Je vérifierai constamment s'il y a des .xml dans le répertoire. Cela signifie qu'à plusieurs reprises, j'obtiendrai un true (signifiant/disant "Oui, il y a .xml fichiers dans le répertoire " ) même pour les fichiers dont les données sont ÊTRE chargé.

Donc une fois qu'un fichier a été trouvé dans le répertoire, J'ai besoin d'un contrôle qui vérifie si ses données sont en cours de chargement dans une base de données . Comment puis-je le vérifier ?

Le processus de chargement des données est le suivant : j'extrais les données utiles du fichier dans un fichier .csv et ensuite utiliser LOAD DATA INFILE Requête SQL pour charger les données dans ma base de données MySQL.

2voto

Jay Rajput Points 1

Une solution consiste à utiliser inotifywait comme suggéré dans cette réponse : https://stackoverflow.com/a/6767891/2032943 pour observer les événements et agir en conséquence.

Aussi, si vous voulez voir si le fichier est déjà utilisé par une autre commande, vous pouvez utiliser linux lsof pour vérifier s'il existe un handle ouvert pour le fichier utilisé par un processus :

lsof | grep <filename>

Notez que ces commandes sont spécifiques à linux et ne fonctionneront pas sous Windows.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X