gestion de fichier - PHP - Programmation
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
Normalement pour vérouiller un fichier il me semble qu'il suffit de l'ouvrir en écriture.
Marsh Posté le 19-11-2003 à 17:00:36
Mara's dad a écrit :
|
j'ouvre mon fichier en 'a+' ;o)
c'ets en ecriture non?
Marsh Posté le 19-11-2003 à 17:01:40
Oui, et qu'est ce qui se passe ?
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 :
|
Marsh Posté le 19-11-2003 à 17:12:53
Bon, bin c'est normal alors.
Tu fais çà
if( $handle = @fopen( ("exemple.txt", "a+" ) ) |
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.
Marsh Posté le 19-11-2003 à 17:14:52
Mara's dad a écrit : Bon, bin c'est normal alors.
|
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?
Marsh Posté le 19-11-2003 à 17:16:02
Mara's dad a écrit : PS : |
ok merci pour le @ c'ets bon a savoir
Marsh Posté le 20-11-2003 à 10:09:31
Pourquoi up ?
Marsh Posté le 20-11-2003 à 10:15:51
Saxgard a écrit : |
pour ca
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.
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 ?
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 : |
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
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
Marsh Posté le 20-11-2003 à 14:37:09
Saxgard 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 ?
Marsh Posté le 20-11-2003 à 15:35:10
Mara's dad a écrit : |
pardon je me suis mal exprimé
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
Marsh Posté le 20-11-2003 à 15:58:03
T'as quoi comme serveur web
Marsh Posté le 20-11-2003 à 15:59:50
ReplyMarsh Posté le 20-11-2003 à 16:09:07
sous nunux ou zindoz ?
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 .
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 |
je te remercie , bon je comprend pas bine ce que c'ets mais je pourrais faire des recherches dessus
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.