|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 190 ![]() |
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 |
|
|
00
|
|
|
#2 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
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). |
|
|
00
|
|
|
#3 | |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 190 ![]() |
Citation:
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? |
|
|
|
00
|
|
|
#4 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
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. |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 190 ![]() |
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 |
|
|
00
|
|
|
#6 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
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). |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com