bonjour à tous
bonjour
je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
ok
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
tu veux dire à chaque appel de la page ?
bonjour à tous
bonjour
je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
ok
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
tu veux dire à chaque appel de la page ?
bonjour à tous
bonjour
je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
ok
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
tu veux dire à chaque appel de la page ?
je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Bonjour,
ownowl a écrit le jeudi 5 avril 2007 09:41 :je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
@+
Bonjour,
ownowl a écrit le jeudi 5 avril 2007 09:41 :
je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
@+
Bonjour,
ownowl a écrit le jeudi 5 avril 2007 09:41 :je souhaite faire un singleton en php (c'est à dire qu'il n'y ai qu'une
seule instance d'une classe dans l'environnement php)
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
@+
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
Tu veux dire que dans ton log, tu n'as qu'une seule ligne de
'initialisation du singleton' quelque soit le nombre de page appelée ?
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
Tu veux dire que dans ton log, tu n'as qu'une seule ligne de
'initialisation du singleton' quelque soit le nombre de page appelée ?
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
Tu veux dire que dans ton log, tu n'as qu'une seule ligne de
'initialisation du singleton' quelque soit le nombre de page appelée ?
tu devrais constater que le constructeur n'est appelé qu'une fois dans la
page.
mais à chaque appel de le page il va être rappelé.
tu devrais constater que le constructeur n'est appelé qu'une fois dans la
page.
mais à chaque appel de le page il va être rappelé.
tu devrais constater que le constructeur n'est appelé qu'une fois dans la
page.
mais à chaque appel de le page il va être rappelé.
oui je suis d'accord, mais c'est bien ca que je veux éviter. Je cherche
que le constructeur soit appelé une seule fois, à la première
utilisation de TypesTruc::getInstance(), [quel que] soit le nombre de pages
appelées ensuite.
Je précise que je viens du monde java, et qu'en java le constructeur
d'un singleton n'est appelé un seule fois durant la durée de vie de la
machine virtuelle.
Cela est-il possible en php (sans utiliser un système
de cache (et d'ailleur un cache, pour être efficace doit bien rester en
mémoire en les appel des différentes pages))?
oui je suis d'accord, mais c'est bien ca que je veux éviter. Je cherche
que le constructeur soit appelé une seule fois, à la première
utilisation de TypesTruc::getInstance(), [quel que] soit le nombre de pages
appelées ensuite.
Je précise que je viens du monde java, et qu'en java le constructeur
d'un singleton n'est appelé un seule fois durant la durée de vie de la
machine virtuelle.
Cela est-il possible en php (sans utiliser un système
de cache (et d'ailleur un cache, pour être efficace doit bien rester en
mémoire en les appel des différentes pages))?
oui je suis d'accord, mais c'est bien ca que je veux éviter. Je cherche
que le constructeur soit appelé une seule fois, à la première
utilisation de TypesTruc::getInstance(), [quel que] soit le nombre de pages
appelées ensuite.
Je précise que je viens du monde java, et qu'en java le constructeur
d'un singleton n'est appelé un seule fois durant la durée de vie de la
machine virtuelle.
Cela est-il possible en php (sans utiliser un système
de cache (et d'ailleur un cache, pour être efficace doit bien rester en
mémoire en les appel des différentes pages))?
Voyons les implications d'un tel mécanisme. L'objet serait créé une
fois sur le serveur, et ne serait jamais détruit jusqu'au reboot de
celui-ci. Tous les utilisateurs de ton script utiliseraient donc le
même (forcément, puisque le serveur ne peut pas distinguer entre deux
requêtes HTTP pour savoir laquelle vient de la même « session d'un
navigateur », laquelle vient d'une autre session, laquelle vient d'un
autre ordinateur, etc.).
Par suite, les objets non réutilisés consommeraient de la place mémoire
jamais libérée (à moins d'arrêter et relancer le serveur), et tu ne
pourrais jamais modifier un script contenant un tel objet sans arrêter
le serveur, puisque des utilisateurs pourraient toujours avoir besoin
de l'ancienne version.
Pas top, à mon avis.
Je précise que je viens du monde java, et qu'en java le constructeur
d'un singleton n'est appelé un seule fois durant la durée de vie de la
machine virtuelle.
Ne me dis pas que la machine virtuelle se trouve sur le serveur, et
qu'une seule et unique machine virtuelle est utilisée par tous les
visiteurs d'un site : je ne te croirais pas.
Et même si tu parlais d'une machine virtuelle tournant sur l'ordinateur
du visiteur, est-ce qu'elle conserve les objets quand tu quittes une
page d'un site pour en ouvrir une autre ? Parce que c'est bien ça qui
se passe avec PHP. Voir <http://faqfclphp.free.fr/#rub2.3>.Cela est-il possible en php (sans utiliser un système
de cache (et d'ailleur un cache, pour être efficace doit bien rester en
mémoire en les appel des différentes pages))?
Quelle mémoire ?
Voyons les implications d'un tel mécanisme. L'objet serait créé une
fois sur le serveur, et ne serait jamais détruit jusqu'au reboot de
celui-ci. Tous les utilisateurs de ton script utiliseraient donc le
même (forcément, puisque le serveur ne peut pas distinguer entre deux
requêtes HTTP pour savoir laquelle vient de la même « session d'un
navigateur », laquelle vient d'une autre session, laquelle vient d'un
autre ordinateur, etc.).
Par suite, les objets non réutilisés consommeraient de la place mémoire
jamais libérée (à moins d'arrêter et relancer le serveur), et tu ne
pourrais jamais modifier un script contenant un tel objet sans arrêter
le serveur, puisque des utilisateurs pourraient toujours avoir besoin
de l'ancienne version.
Pas top, à mon avis.
Je précise que je viens du monde java, et qu'en java le constructeur
d'un singleton n'est appelé un seule fois durant la durée de vie de la
machine virtuelle.
Ne me dis pas que la machine virtuelle se trouve sur le serveur, et
qu'une seule et unique machine virtuelle est utilisée par tous les
visiteurs d'un site : je ne te croirais pas.
Et même si tu parlais d'une machine virtuelle tournant sur l'ordinateur
du visiteur, est-ce qu'elle conserve les objets quand tu quittes une
page d'un site pour en ouvrir une autre ? Parce que c'est bien ça qui
se passe avec PHP. Voir <http://faqfclphp.free.fr/#rub2.3>.
Cela est-il possible en php (sans utiliser un système
de cache (et d'ailleur un cache, pour être efficace doit bien rester en
mémoire en les appel des différentes pages))?
Quelle mémoire ?
Voyons les implications d'un tel mécanisme. L'objet serait créé une
fois sur le serveur, et ne serait jamais détruit jusqu'au reboot de
celui-ci. Tous les utilisateurs de ton script utiliseraient donc le
même (forcément, puisque le serveur ne peut pas distinguer entre deux
requêtes HTTP pour savoir laquelle vient de la même « session d'un
navigateur », laquelle vient d'une autre session, laquelle vient d'un
autre ordinateur, etc.).
Par suite, les objets non réutilisés consommeraient de la place mémoire
jamais libérée (à moins d'arrêter et relancer le serveur), et tu ne
pourrais jamais modifier un script contenant un tel objet sans arrêter
le serveur, puisque des utilisateurs pourraient toujours avoir besoin
de l'ancienne version.
Pas top, à mon avis.
Je précise que je viens du monde java, et qu'en java le constructeur
d'un singleton n'est appelé un seule fois durant la durée de vie de la
machine virtuelle.
Ne me dis pas que la machine virtuelle se trouve sur le serveur, et
qu'une seule et unique machine virtuelle est utilisée par tous les
visiteurs d'un site : je ne te croirais pas.
Et même si tu parlais d'une machine virtuelle tournant sur l'ordinateur
du visiteur, est-ce qu'elle conserve les objets quand tu quittes une
page d'un site pour en ouvrir une autre ? Parce que c'est bien ça qui
se passe avec PHP. Voir <http://faqfclphp.free.fr/#rub2.3>.Cela est-il possible en php (sans utiliser un système
de cache (et d'ailleur un cache, pour être efficace doit bien rester en
mémoire en les appel des différentes pages))?
Quelle mémoire ?
oui je suis d'accord, mais c'est bien ca que je veux éviter. Je cherche
que le constructeur soit appelé une seule fois, à la première utilisation
de TypesTruc::getInstance(), quelque soit le nombre de pages appelées
ensuite.
Je précise que je viens du monde java, et qu'en java le constructeur d'un
singleton n'est appelé un seule fois durant la durée de vie de la machine
virtuelle. Cela est-il possible en php (sans utiliser un système de cache
(et d'ailleur un cache, pour être efficace doit bien rester en mémoire en
les appel des différentes pages))?
oui je suis d'accord, mais c'est bien ca que je veux éviter. Je cherche
que le constructeur soit appelé une seule fois, à la première utilisation
de TypesTruc::getInstance(), quelque soit le nombre de pages appelées
ensuite.
Je précise que je viens du monde java, et qu'en java le constructeur d'un
singleton n'est appelé un seule fois durant la durée de vie de la machine
virtuelle. Cela est-il possible en php (sans utiliser un système de cache
(et d'ailleur un cache, pour être efficace doit bien rester en mémoire en
les appel des différentes pages))?
oui je suis d'accord, mais c'est bien ca que je veux éviter. Je cherche
que le constructeur soit appelé une seule fois, à la première utilisation
de TypesTruc::getInstance(), quelque soit le nombre de pages appelées
ensuite.
Je précise que je viens du monde java, et qu'en java le constructeur d'un
singleton n'est appelé un seule fois durant la durée de vie de la machine
virtuelle. Cela est-il possible en php (sans utiliser un système de cache
(et d'ailleur un cache, pour être efficace doit bien rester en mémoire en
les appel des différentes pages))?
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
Tu veux dire que dans ton log, tu n'as qu'une seule ligne de
'initialisation du singleton' quelque soit le nombre de page appelée ?
Ah non, ça ce n'est pas possible. Lorsque le script PHP s'arrête, toute
la mémoire allouée est libérée... ce d'autant plus lorsque PHP est lancé
sous forme de CGI plutôt que de module Apache, puisque alors c'est
carrément le process qui s'arrête.
Si tu veux de la persistance de données entre deux appels de scripts, tu
dois utiliser un fichier ou une base de données.
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
Tu veux dire que dans ton log, tu n'as qu'une seule ligne de
'initialisation du singleton' quelque soit le nombre de page appelée ?
Ah non, ça ce n'est pas possible. Lorsque le script PHP s'arrête, toute
la mémoire allouée est libérée... ce d'autant plus lorsque PHP est lancé
sous forme de CGI plutôt que de module Apache, puisque alors c'est
carrément le process qui s'arrête.
Si tu veux de la persistance de données entre deux appels de scripts, tu
dois utiliser un fichier ou une base de données.
Le problème est : A chaque fois que je fais appel à
TypesTruc::getInstance()->getTypes()
je repasse systématiquement dans le constructeur.
Je viens de faire le test en PHP 5 et je n'ai pas ton problème.
Tu veux dire que dans ton log, tu n'as qu'une seule ligne de
'initialisation du singleton' quelque soit le nombre de page appelée ?
Ah non, ça ce n'est pas possible. Lorsque le script PHP s'arrête, toute
la mémoire allouée est libérée... ce d'autant plus lorsque PHP est lancé
sous forme de CGI plutôt que de module Apache, puisque alors c'est
carrément le process qui s'arrête.
Si tu veux de la persistance de données entre deux appels de scripts, tu
dois utiliser un fichier ou une base de données.
Ne me dis pas que la machine virtuelle se trouve sur le serveur, et
qu'une seule et unique machine virtuelle est utilisée par tous les
visiteurs d'un site : je ne te croirais pas.
et pourtant, généralement c'est bien comme ca que ca se passe ! Les
serveur d'apllication java du type weblogic, websphere, tomcat,...,
fonctionnent au sein d'une seule machine virtuelle, (même s'il est
possible d'en avoir plusieurs) et toutes les requêtes utilisateurs
tourne dans cette VM.
Quelle mémoire ?
j'ai vu, sans toutefois creuser, qu'il y avait des bibliotèques ou
framework php qui proposent une gestion de cache.
L'intérêt d'un cache,
c'est justement de garder un mémoire (sur le serveur) des informations
souvent sollicitées. Un accès mémoire sera toujours beaucoup plus rapide
qu'un accès fichier ou base de données
Ne me dis pas que la machine virtuelle se trouve sur le serveur, et
qu'une seule et unique machine virtuelle est utilisée par tous les
visiteurs d'un site : je ne te croirais pas.
et pourtant, généralement c'est bien comme ca que ca se passe ! Les
serveur d'apllication java du type weblogic, websphere, tomcat,...,
fonctionnent au sein d'une seule machine virtuelle, (même s'il est
possible d'en avoir plusieurs) et toutes les requêtes utilisateurs
tourne dans cette VM.
Quelle mémoire ?
j'ai vu, sans toutefois creuser, qu'il y avait des bibliotèques ou
framework php qui proposent une gestion de cache.
L'intérêt d'un cache,
c'est justement de garder un mémoire (sur le serveur) des informations
souvent sollicitées. Un accès mémoire sera toujours beaucoup plus rapide
qu'un accès fichier ou base de données
Ne me dis pas que la machine virtuelle se trouve sur le serveur, et
qu'une seule et unique machine virtuelle est utilisée par tous les
visiteurs d'un site : je ne te croirais pas.
et pourtant, généralement c'est bien comme ca que ca se passe ! Les
serveur d'apllication java du type weblogic, websphere, tomcat,...,
fonctionnent au sein d'une seule machine virtuelle, (même s'il est
possible d'en avoir plusieurs) et toutes les requêtes utilisateurs
tourne dans cette VM.
Quelle mémoire ?
j'ai vu, sans toutefois creuser, qu'il y avait des bibliotèques ou
framework php qui proposent une gestion de cache.
L'intérêt d'un cache,
c'est justement de garder un mémoire (sur le serveur) des informations
souvent sollicitées. Un accès mémoire sera toujours beaucoup plus rapide
qu'un accès fichier ou base de données