Bonjour le forum!
J'ai le probleme suivant:
J'ai lu a plusieurs endroits que la protection contre la collision de deux requetes sur une base de données est bien meilleure que celle fournie par la fonction php flock pour le verrouillage des fichiers. Donc on nous conseille d'utiliser de préférnces les bdd que les fichiers pour stocker les données.
Donc j'ai décidé de faire une systeme personnalisé de verrouillage des fichiers par stockage du nom du fichier dans une bdd mysql (et aussi car flock ne marche pas pour toutes les fonctions d'ecriture et de lecture dans les fichiers).
Voila le probleme: le blocage d'un fichier se fait par inclusion de son nom qui est une clé primaire dans la bdd. Or apparemment parfois il se produit deux écritures en meme temps sur le fichier donc deux requetes d'inclusion du nom de fichier dans la bdd sont entrées en collision (si elle n'etaient pas rentrées en collision, la premiere aurait été acceptée mais pas le deuxieme car clé primaire). Est-ce possible?
NB:voila comment j'ai vérifié produit la collision: le script php qui se trouve sur un serveur distant (chez un hébergeur) est sollicité par moi par deux ordis différents, et ce script contient une boucle qui écrit 5000 fois (assez pour que les deux appels au script se superposent) sur le meme fichier (en rajoutant le texte a la fin du fichier). Le texte obtenu montre un mélange des données rentrées et des caractere non reconnus ????? preuve qu'il y a eu superposition. Je me disais q'etant donné qu'on effectue les requetes a la vitesse d'exécution du programme il est normal qu'il y ai des collisions de requetes dans la bdd. Mais j'ai fait un test avec flock a la place du verrouillage par bdd et avec flock on a légerement moins de superpositions...?
Partager