Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2007, 05h22   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 42
Points : 11
Points : 11
Par défaut [SQL] Bug de fichier aléatoire

Salut,

Comme certains ont pu le lire sur un autre topic, je suis en train de développer un système de forums.

Je n'utilise aucun FrameWork et j'essaye de tout développer.

J'ai créé un système de cache pour stocker le résultat des requêtes SQL couramment lancées.

C'est à ce niveau que ca posait problème.

Il arrivait quelques fois que le forum écrive n'importe quoi dans le fichier cache, ca arrivait souvent aux heures de pointe là où le cache est très souvent réécrit.

J'ai revu plusieurs fois le code je ne trouvais pas la cause de ce bug.

J'ai découvert l'existance de la fonction : flock();

Apparemment depuis que je l'utilise ca n'a pas rebuggé (je n'ai pas encore assez de recul pour être sur que le bug a été corrigé).

J'en déduis que PHP essayait d'écrire dans le fichier avant qu'il ne l'ait fermé.

Pensez vous que le problème venait de là?

Merci d'avance pour vos réponses.

A+
vtuning.net est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 10h55   #2
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

C'est fort probable ouè.
Lorsque tu as beaucoup de programmes qui veulent accéder à une ressource, il faut utiliser ce genre de fonction qui simule un sémaphore en fait.
C'est de l'exclusion mutuelle : il y a un seul jeton, j'ai le jeton donc je peux écrire dans le fichier, lorsque j'ai fini mon écriture, je passe le jeton au suivant donc il pourra à son tour écrire, etc.
Ceci empêche que plusieurs programme écrivent le même fichier et que ça retourne n'importe quoi du coup.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 12h49   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 42
Points : 11
Points : 11
Merci pour ta réponse

C'est donc ce qu'il me semblait.

Mais comment ca se passe si il y 2 (voire plus) le premier écrit, celui qui arrive en même temps est placé en file d'attente comme tu dis ou le verrou l'empêche totalement d'écrire?
vtuning.net est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 13h18   #4
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605
ça dépends de l'implémentation de la fonction flock.
Si c'est juste un système de verrou alors il ne devrait pas y avoir de file d'attente donc le 2° qui arrive prendra un rebond et devra revenir pour pouvoir accéder à la ressource mais normalement dans ce genre de système il y a une file d'attente (c'est quand même plus simple et plus logique)
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h20.


 
 
 
 
Partenaires

Hébergement Web