|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Bonjour, je prépare un nouveau système de mise en cache et je me pose une légère question concernant la gestion des fichiers.
J'explique le cas ci-dessous afin de rendre ma question plus compréhensible : On créer une actualité : _ elle s'ajoute dans la base de données. Un utilisateur demande la page qui contient cette actualité :
L'actualité est modifer : _ On supprime le fichier 44200.html, après avoir effectué la modification dans la base de données Ma question est : Si plusieurs utilisateurs accèdent simultanément à une même actualité (numéro 44200) alors que le fichier 44200.html est supprimé à ce même moment. L'affichage de la page risque t'elle d'être altérer ? Sachant que je vérifie si le fichier existe bien juste avant l'inclusion : Code :
Si je devais choisir de modifier le fichier, je devrais forcement demander à la base de données la date de la dernière modification et la comparer avec le fichier existant (donc 2 vérifications supplémentaires) ! Mais en supprimant le fichier, on s'assure donc que le fichier est périmer. Donc l'affichage d'une actualité 99,9% du temps ne requière aucune connexion à la base de données. Avec une forte affluence cette méthode risque t'elle de causer quelques soucis ? Si un fichier est supprimer pendent l'inclusion de php, l'affichage se fais t'il correctement ou risque t'il d'être altéré. PS : je préfère créer le script moi même pour plus de flexibilité Qu'en pensez-vous ? Auriez-vous une meilleure méthode que celle présenter ? |
||
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : décembre 2005 Messages : 818 ![]() |
As-tu jeté un oeil au niveau des variables LOCK UNLOCK de PHP?
Je pense que la solution est là... |
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Je te remercie de ta réponse, mais elle reste très flou vis-à-vis de mes connaissances.
Quand tu dis : "variable de php lock ou unlock", sa ne me dis rien et je ne trouve rien à se sujet sur google. Par contre, je pense que tu fais peu être allusion à la fonction flock(); mais je n'ai jamais chercher à comprendre cette fonction. J'ai fait quelques recherches à ce propos. Peux-tu me dire si j'ai bien compris la fonction : On ouvre le fichier puis l'on créer un verrou pour le fermer une fois la lecture terminer. Ce qui empêche d'obtenir un fichier incomplet. C'est bien cela ? À supposer que j'ai bien compris le procédé, cette méthode n'empêchera pas la suppression du fichier alors qu'un verrou est posé dessus au même moment ? |
|
|
00
|
|
|
#4 | |
|
Membre éprouvé
![]() Inscription : décembre 2005 Messages : 818 ![]() |
Citation:
Oui bien sûr flock() etc. Ca te permet lorsque tu tentes de modifier un fichier, d'empêcher d'autres script de modifier ce fichier... Ainsi, ça évitera justement le problème que tu souhaites éviter... |
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Je suis content d'avoir compris le principe de la fonction. Apès avoir poster j'ai continué à rechercher et ta réponse me ramène au problème que je pense.
Admettons que je modifie une actualité, je ne pourrais donc pas supprimer le fichier si php à poser un verrou pendent se temps là ? Je devrais donc faire une boucle while avec un usleep et vérifier plusieurs fois jusqu'a que le fichier n'est plus verrouillé pour le supprimer ? Voici un exemple de code (pourrais tu me dire si j'ai bien compris) : Code :
|
||
|
|
00
|
|
|
#6 | |||
|
Membre éprouvé
![]() Inscription : décembre 2005 Messages : 818 ![]() |
Citation:
Maintenant si quelqu'un connait une meilleure solution... |
|||
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2008 Messages : 48 ![]() |
Je pense créer une table dans la base de données qui liste les fichiers à supprimer.
Je donnerais à ce fichier php une limite de temps d'exécution assez haut. Il essayera de supprimer les fichiers avec une boucle while. Il sera lancer à chaque modificaiton à faire. Mais c'est barbare je trouve Mais en cas de forte affluence, le fichier peut attendre longtemps avant d'être modifié ? Si quelqu'un à une meilleure solution je suis preneur également. En tout cas merci Sayrus, j'en aurais appris un peu plus sur la gestion des fichiers. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com