Tester si un fichier est ouvert ou non

Eléphant du PHP | 67 Messages

30 juil. 2008, 11:57

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

Eléphant du PHP | 169 Messages

30 juil. 2008, 12:04

[edit] Ouh, la grosse boulette
Modifié en dernier par _activmik le 30 juil. 2008, 15:59, modifié 1 fois.

Mammouth du PHP | 965 Messages

30 juil. 2008, 12:57

C'est un macro XL je ne vois pas ce qu'il a comme rapport avec le PHP.

Eléphant du PHP | 67 Messages

30 juil. 2008, 14:23

J'me disais aussi ...

ViPHP
ViPHP | 4674 Messages

30 juil. 2008, 15:34

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: !
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 169 Messages

30 juil. 2008, 15:57

Oui je me rends compte..

J'accepte la flagellation :roll:

Eléphant du PHP | 67 Messages

30 juil. 2008, 16:15


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

ViPHP
ViPHP | 4674 Messages

30 juil. 2008, 16:20

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).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 67 Messages

30 juil. 2008, 16:26

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.