Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
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 02/01/2008, 22h00   #1
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Par défaut [SimpleXML] Ouvrir une seule fois un fichier xml

Bonjour à tous,

J'ai un fichier xml que je dois appeler depuis 3 classes. J'utilise la fonction simplexml_load_file ('monficher.xml') pour charger les données.

Mais je veux éviter que le fichier xml soit chargé 3 fois (Perte de temps, surtout que c'est le même fichier).

J'ai pensé à utiliser le singleton pour ouvrir 1 seule fois le fichier peut importe le nombre d'appele du fichier.

Ma question est: est-ce que "simplexml_load_file" gère lui même tout ca,c-a-d qu'il crée une seule instance peut importe le nombre de fois qu'on appele le fichier, ou bien je dois passer par un singleton.

J'utilise le php.

Merci d'avance
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 22h07   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Non, PHP ne gère pas cet aspect en interne, ce sera donc à vous de l'implémenter.

Attention tout de même, en PHP la persistance en mémoire de données n'existe pas réellement et un objet de type singleton ne sera partagé que par le script courant (ce qui inclue ses inclusions).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 03h39   #3
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Citation:
Envoyé par julp Voir le message
Attention tout de même, en PHP la persistance en mémoire de données n'existe pas réellement et un objet de type singleton ne sera partagé que par le script courant (ce qui inclue ses inclusions).

Donc un singleton doit être présent sur chaque classe (script) afin d'éviter que le script lit plusieurs fois le même fichier xml?
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 11h48   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
A moins d'utiliser la variante multiton ...

Cela dit ça peut devenir assez consommateur en ressources suivant le nombre de fichiers lus et la taille de chacun.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 03h40   #5
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Bonjour julp,

Là j'utilise mon singleton sur les 3 classes php, puisque les 3 classes ont besoin du même fichier xml.

Mais il ya quelque chose qui me préoccupe.

Admettons qu'il ya 10 personnes à la fois qui utilisent mon fichier xml. (En lecture).Admettons aussi qu'ils utilisent juste 1 des trois classes.

Étant donné que j'ai un singleton dans cette classe, est-ce que mon fichier xml va être ouvert une seule fois même si il est utilisé par 10 personnes ? (Premier arrivé, premier qui ouvre le fichier).Et quand l'instance va être terminé ? (c-a-d fichier fermé), et quand elle sera recréer (réouverture du fichier)

Comment tout ca fonctionne au juste ?

Merci
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 11h54   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Comme dit plus haut, aucun script (peu importe ce qu'il contient) ne reste en mémoire. Le singleton ne sera valable que pour le script courant appelé. Autrement dit si vous avez 10 clients (simultanés ou non), 10 singletons seront créés avec ce qu'il gère. C'est le principe même de PHP (interprétation de script) : le singleton n'est "effectif" qu'au script lui-même et à ceux qu'ils appellent (inclusions). Il faut voir chaque exécution de script comme un processus distinct et indépendant des autres.

Les sessions permettent, par exemple, d'assurer une certaine persistance à des données mais vous êtes limités (comme pour tout le reste) aux variables qui ne sont pas de type ressource (un SimpleXMLElement possède en interne de tels attributs - puisque basé sur libxml2 - ce qui le rend non sérialisable).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h44.


 
 
 
 
Partenaires

Hébergement Web