gestion de fichier

gestion de fichier - PHP - Programmation

Marsh Posté le 19-11-2003 à 16:28:04    

voila
 
Comment tester avant d'ecrire dans un fichierq ue celui-ci est ouvert ou non? afin d'evietr des conflit d'ecriture
 
peut-on ecrire dans un fichier qui est deja ouvert par une autre personne? si oui comment?
 
quelle sont les meilleurs methode pour utiliser les fichiers comme si c'était une base de données?  si vous avez des liens de site interssant , je suis prenneur.
 
 
En gros j'aimerais eviter des conflits d'ecriture dans un fichier etant donné que mon programme enregistre des informations dans des fichiers etq ue cretains utilisateurs peuvent ouvrir à ce moment là ces mêmes fichiers.
 
merci d'avance.

Reply

Marsh Posté le 19-11-2003 à 16:28:04   

Reply

Marsh Posté le 19-11-2003 à 16:52:38    

Citation :

En gros j'aimerais eviter des conflits d'ecriture dans un fichier etant donné que mon programme enregistre des informations dans des fichiers etq ue cretains utilisateurs peuvent ouvrir à ce moment là ces mêmes fichiers.


 
C'est tellement vrai :lol:  
 
Normalement pour vérouiller un fichier il me semble qu'il suffit de l'ouvrir en écriture.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-11-2003 à 17:00:36    

Mara's dad a écrit :

Citation :

En gros j'aimerais eviter des conflits d'ecriture dans un fichier etant donné que mon programme enregistre des informations dans des fichiers etq ue cretains utilisateurs peuvent ouvrir à ce moment là ces mêmes fichiers.


 
C'est tellement vrai :lol:  
 
Normalement pour vérouiller un fichier il me semble qu'il suffit de l'ouvrir en écriture.


 
j'ouvre mon fichier en 'a+' ;o)
c'ets en ecriture non?  
 :(

Reply

Marsh Posté le 19-11-2003 à 17:01:40    

Oui, et qu'est ce qui se passe ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-11-2003 à 17:05:14    

Mara's dad a écrit :

Oui, et qu'est ce qui se passe ?


 
bah si le fichier est ouvert et que j'execute le programme et qui fait donc un fwrite
bin j'ai :  
 

Code :
  1. Warning: fopen("exemple.txt", "a+" ) - Permission denied in c:\test.php on line 13
  2. Impossible d'ouvrir le fichier ()


 

Reply

Marsh Posté le 19-11-2003 à 17:12:53    

Bon, bin c'est normal alors.
Tu fais çà
 

if( $handle = @fopen( ("exemple.txt", "a+" ) )
{
 // Mon fichier est ouvert
 ...
}
else
{
 // Impossible d'ouvrir le fichier
 ...
}


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-11-2003 à 17:14:07    

PS :
le @ devant une fonction, c'est pour (en très gros) supprimer les warning temporairement.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-11-2003 à 17:14:52    

Mara's dad a écrit :

Bon, bin c'est normal alors.
Tu fais çà
 

if( $handle = @fopen( ("exemple.txt", "a+" ) )
{
 // Mon fichier est ouvert
 ...
}
else
{
 // Impossible d'ouvrir le fichier
 ...
}




donc il ya aucun moyen d'ecrire dans un fichier deja ouvert? ou de faire come le principe des sémaphores et d emettre en attente ou jene sais quoi? ;o)
 
comment font ceux qui utilisent les fichiers a la place d'une  base de données? ils doivenet rencontrer souvent le pb je pense  non?  :)

Reply

Marsh Posté le 19-11-2003 à 17:16:02    

Mara's dad a écrit :

PS :
le @ devant une fonction, c'est pour (en très gros) supprimer les warning temporairement.  


 
ok merci pour le @ c'ets bon a savoir

Reply

Marsh Posté le 19-11-2003 à 17:36:51    

up

Reply

Marsh Posté le 19-11-2003 à 17:36:51   

Reply

Marsh Posté le 20-11-2003 à 09:35:52    

up

Reply

Marsh Posté le 20-11-2003 à 10:09:31    

Pourquoi up ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-11-2003 à 10:15:51    

Saxgard a écrit :


donc il ya aucun moyen d'ecrire dans un fichier deja ouvert? ou de faire come le principe des sémaphores et d emettre en attente ou jene sais quoi? ;o)
 
comment font ceux qui utilisent les fichiers a la place d'une  base de données? ils doivenet rencontrer souvent le pb je pense  non?  :)  


 
pour ca   :)

Reply

Marsh Posté le 20-11-2003 à 10:41:23    

Ben en fait, t'as 2 manières de faire les choses :
 
- Soit tu as plusieurs process (ton cas) qui doivent écrire et chacun attend que le fichier soit dispo (boucle).
 
- Soit comme les serveurs de BDD tu as plusieurs process qui traitent les requêtes, mais un seul qui fait les écritures. Ce dernier sert de process serveur pour les autres.
 
Enfin, c'est comme çà que je le comprends.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-11-2003 à 11:05:11    

ya pas une commande php "flock" ou "floc" qui  bloque l'accés a + de une requete sur le meme fichier ?

Reply

Marsh Posté le 20-11-2003 à 13:48:33    

Mara's dad a écrit :

Ben en fait, t'as 2 manières de faire les choses :
 
- Soit tu as plusieurs process (ton cas) qui doivent écrire et chacun attend que le fichier soit dispo (boucle).
 
- Soit comme les serveurs de BDD tu as plusieurs process qui traitent les requêtes, mais un seul qui fait les écritures. Ce dernier sert de process serveur pour les autres.
 
Enfin, c'est comme çà que je le comprends.


 
bin disons que dans l'application que j'ai faite  , suelment une seule personne peu valider des produits et enregistrer ceux la dans un fichier.
Cependant il est possible que cette meme personne  ouvre un des fichiers résultat et oublie de le fermer, et exceute a nouveau l'applctaion.
Donc si je fais un systeme de boucle qui attend etc.. je  risuqe d'attendre longtemps.
 
L'idéal c'ets que je puisse sois ecrire dans un fichier ouvert  soit que je puisse détecter si un fichier est ouvert pour agir en consequence en ecrivant dans un autre fichier par exemple

Reply

Marsh Posté le 20-11-2003 à 13:51:04    

noizing a écrit :

ya pas une commande php "flock" ou "floc" qui  bloque l'accés a + de une requete sur le meme fichier ?


 
apres recherche je crois en effet que la fonction exist , et ca me parait tres interssant et ac a l'air de reposer sur le principe des semaphores
 
merci

Reply

Marsh Posté le 20-11-2003 à 14:37:09    

Saxgard a écrit :


Cependant il est possible que cette meme personne  ouvre un des fichiers résultat et oublie de le fermer, et exceute a nouveau l'applctaion.
Donc si je fais un systeme de boucle qui attend etc.. je  risuqe d'attendre longtemps.


Donc ton appli n'est pas que en PHP !
 
Sinon, tous les fichiers ouverts par un script sont automatiquement fermés à la fin de l'execution du script.
On ne peux pas garder un script "en cours d'execution" et oublier de le fermer...
 
Question en passant, pourquoi ne pas utiliser une BDD ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-11-2003 à 15:35:10    

Mara's dad a écrit :


Donc ton appli n'est pas que en PHP !
 
Sinon, tous les fichiers ouverts par un script sont automatiquement fermés à la fin de l'execution du script.
On ne peux pas garder un script "en cours d'execution" et oublier de le fermer...
 
Question en passant, pourquoi ne pas utiliser une BDD ?


 
pardon je me suis mal exprimé  :D  
disons qu'apres les fichiers sont ouvert a la main sous windows (pas uniquement par l'application)
 
c'est des fichiers textes qui doivent etre ouvert sous excel pour être transformé au formal xls

Reply

Marsh Posté le 20-11-2003 à 15:58:03    

T'as quoi comme serveur web


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-11-2003 à 15:59:50    

Mara's dad a écrit :

T'as quoi comme serveur web


 
j'ai apache

Reply

Marsh Posté le 20-11-2003 à 16:09:07    

sous nunux ou zindoz ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-11-2003 à 16:10:27    

Mara's dad a écrit :

sous nunux ou zindoz ?


 
window 2000

Reply

Marsh Posté le 20-11-2003 à 16:12:33    

Donc tu peux faire du COM http://www.php.net/manual/fr/ref.com.php
Et donc écrire dirrectement dans un fichier Excel, a condition bien sûr qu'il ne soit pas déjà ouvert par un utilisateur :D.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 20-11-2003 à 16:39:51    

Mara's dad a écrit :

Donc tu peux faire du COM http://www.php.net/manual/fr/ref.com.php
Et donc écrire dirrectement dans un fichier Excel, a condition bien sûr qu'il ne soit pas déjà ouvert par un utilisateur :D.


 
je te remercie  , bon je comprend pas bine ce que c'ets mais je pourrais faire des recherches dessus  ;)  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed