Gestion des modifications en SimpleXML

Résolu/Fermé
Evi - 5 févr. 2014 à 07:44
robinam Messages postés 25 Date d'inscription vendredi 31 janvier 2014 Statut Membre Dernière intervention 6 février 2014 - 6 févr. 2014 à 23:30
Bonjour,

je débute en PHP, et j'utilise un fichier XML et SimpleXML pour gérer du contenu.

Le fichier contient une liste d'album de musique :
<album>
<num></num>
<titre></titre>
<artiste></artiste>
...
</album>

Les utilisateurs peuvent ajouter des albums, modifier les titres, etc.

Je pourrai utiliser une base de donnée, mais à mon niveau c'est impossible :)

Bref, je me pose un question sur le traitement des modifications apportée par les utilisateurs en PHP, via un formulaire HTML.

Si il y a 100 utilisateurs qui valident le formulaire dans la même seconde, comment cela se passe t'il coté serveur ?

Est-ce que le serveur crée une sorte de liste d'ordre d'arrivée des requêtes pour les exécuter dans l'ordre, ou est t-il possible que certaines requête soit omises ?

Bonne journée,
Evi

1 réponse

robinam Messages postés 25 Date d'inscription vendredi 31 janvier 2014 Statut Membre Dernière intervention 6 février 2014 2
5 févr. 2014 à 22:59
Bonjour,

L'avantage de la base de donnée, c'est que les accès sont sérialisés.

Si tu as 100 personne qui valide ton formulaire, tu peux faire 100 insert dans ta base de données sans te poser de question.

après, la limite est plus au niveau de ton serveur, 100 personne c'est très peu, par contre 100 000, là tu peux avoir des problèmes :)

Avec ton fichier XML, c'est différent, tu va devoir gérer toi même les accès concurrent, c'est à dire , comment gérer qu'n utilisateur A modifie le fichier en même temps qu'un utilisateur B.
Tu te complique donc la tâche car dans ce cas, tu peux effectivement rencontrer des pertes de données si tu ne gère pas bien les accès en lecture et écriture de ton fichier XML.

Je ne dit pas que c'est impossible, mais si le fait de ne pas utiliser de BDD c'est juste parce que tu ne maîtrise pas cette partie, je pense que tu gagnera beaucoup de temps en apprenant à utiliser une base mysql ou postgreSQL, plutôt qu'à te casser la tête avec les fichier XML.
0
Merci pour la réponse


Cette mini application ne sera partagée qu'entre quelques amis, et n'a pas pour but de durer, la question était surtout théorique, et pour les prochains travaux que je réaliserais. Donc pour cette fois je vais garder ce système.


Mais la prochaine fois ou j'aurais besoin de ce genre de système, j'utiliserai un base de donnée :) Heureusement, le SQL je connais ( Bac STG ! ). Pourvu que je m'en souvienne....
0
robinam Messages postés 25 Date d'inscription vendredi 31 janvier 2014 Statut Membre Dernière intervention 6 février 2014 2
6 févr. 2014 à 23:30
Bonjour,

Dans ce cas, il faudrait gérer manuellement un lock du fichier. Au niveau algorithmique cela revient à mettre tes requêtes en pause, si une modification est en cours
- je consulte le fichier
- Si lock présent, j'attend x seconde, et je tente à nouveau
- Sinon, ouvrir le fichier en lecture et/ou ecriture
- Je réalise mes modifications
- je retire le lock pour laisser la place aux autres utilisateurs

Par contre effectivement, il faudra faire attention à bien gérer ta file de requête pour ne pas perdre de données (au niveau PHP, je n'ai jamais tenté).
Après tu as d'autre solution possibles, par exemple en utilisant plusieurs fichiers de copie (chaque utilisateur dispose d'une copie du fichier dans lequel il fait les modification, et quand les modifications sont terminé, tu fait un merge de ton fichier avec le reste)
tu as moins de risque de perte de donnée (tout le monde peut créer en même temps. Reste à voir comment merger facilement tes fichiers

après tout dépend également de la disponibilité de tes modification; est- ce qu'une modification réalisé à un instant T doit être répercutée dans les 10 secondes ou dans les 10 minutes voir dans les 10 prochaines heures.
0