Page 1 sur 1

Tester si un fichier est ouvert ou non

Posté : 30 juil. 2008, 11:57
par vince_weed
Je cherche un moyen de savoir si un fichier est ouvert ou non. Je m'explique, je sais que lors de l'ouverture (avec un fopen() ou autre) ce que retourne la fonction permet de determiner si le fichier a bien était ouvert mais ce n'est pas ce que je veut. Je cherche une fonction similaire à file_exists() mais pour tester si le fichier est ouvert. En existe il une et si non comment puis-je me débrouiller autrement.

merci d'avance

Posté : 30 juil. 2008, 12:04
par _activmik
[edit] Ouh, la grosse boulette

Posté : 30 juil. 2008, 12:57
par agité
C'est un macro XL je ne vois pas ce qu'il a comme rapport avec le PHP.

Posté : 30 juil. 2008, 14:23
par vince_weed
J'me disais aussi ...

Posté : 30 juil. 2008, 15:34
par Hywan
Hey :),

À ma connaissance, il n'existe pas de fonction comme tu cherches. Néanmoins, tu peux faire une classe en PHP qui centralise et gère tous les accès aux fichiers (et donc ouverture, fermeture, etc.). Soit en fait, un registre de ressources vers des fichiers. De cette façon, tu peux te débrouiller pour le savoir.

Et bravo _activmik pour donner du VB (ou .NET) sur un forum de PHP où l'on aime beaucoup VB (et .NET). Ça mériterait de passer sur bashfr si ce n'était pas si long :langue: !

Posté : 30 juil. 2008, 15:57
par _activmik
Oui je me rends compte..

J'accepte la flagellation :roll:

Posté : 30 juil. 2008, 16:15
par vince_weed

Néanmoins, tu peux faire une classe en PHP qui centralise et gère tous les accès aux fichiers (et donc ouverture, fermeture, etc.). Soit en fait, un registre de ressources vers des fichiers. De cette façon, tu peux te débrouiller pour le savoir.
En fait c'est ce que je suis en train de faire :twisted: le problème est que les fichier sur lesquels je travail peuvent etre ouvert par une autre appli, or dans cette fameuse classe j'ai des fonctions qui vont ouvrir plusieurs fichiers et modifier leurs contenu. Le problème étant que si je me ramasse une erreur sur l'ouverture d'un fichier, les fichier traités précédement dans la fonctions ont quand même reçu la modif. Comme une demis mise a jour n'est pas vraiment souhaitable (du coup obliger de coder un bidouille qui vas défaire la modif dans les premier fichiers) je voudrai pouvoir tester si tout les fichiers traités par la fonction ne sont pas déja ouvert.

PS: je sais c'est pas extrement pertinent comme test car un des fichier peut etre ouvert par une autre appli apres le test et avant que j'en sois a le traiter mais comme le traitement est court il y a quand même peu de chance.

donc vas falloir que je me débrouile autrement.... ou alors je me met au .NET :P

Posté : 30 juil. 2008, 16:20
par Hywan
Ah, tu veux même savoir si un fichier est partagé avec une autre application …
Tu peux utiliser les verrous de fichier de PHP, mais le fichier ne sera plus exécutable par une autre application …

Hmm, là, tu es dans un cas où chaque système d'exploitation utilise une technique différente. Je vais chercher de mon côté pour voir, mais si PHP ne prend pas ça en compte, je ne vois pas trop comment faire … (mais je sais qu'il ne faut pas faire de VB :P).

Posté : 30 juil. 2008, 16:26
par vince_weed
Merci pour l'info, je ne connaissait pas ce systeme de verrous, je vais tout verrouiller pendant que le collegue qui développe l'autre appli est en vacance ! :twisted:

Plus sérieusement dans ma boite tout est sous XP et le serveur concerné sous windows aussi donc pas de probleme si ce n'est pas compatible avec d'autres OS.