|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 42 ![]() |
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+ |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 572 ![]() |
![]() 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 |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 42 ![]() |
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? |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 572 ![]() |
ç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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com