OVH Cloud OVH Cloud

contexte d'application

9 réponses
Avatar
Thierry
Salut à tous,

De la même manière qu'il y a le contexte de requette et le contexte de
session, je voudrais savoir s'il existe un contexte d'application. Et si
oui comment on s'en sert.

Merci bcp.
Th.

PS : J'utilise des mots Java mais je suis certain que tout le monde aura
compris.

9 réponses

Avatar
bruno modulix
Thierry wrote:
Salut à tous,

De la même manière qu'il y a le contexte de requette
$_REQUEST


et le contexte de
session,
$_SESSION


je voudrais savoir s'il existe un contexte d'application.
$GLOBALS ?

Et si
oui comment on s'en sert.


A un détail près (il est accessible partout sans devoir le déclarer
global), ce n'est jamais qu'un tableau associatif...

Ceci étant, je ne sais pas dans quelle mesure ça correspond à ce que tu
peux connaître en Java...

HTH
--
bruno desthuilliers
ruby -e "print ''.split('@').collect{|p|
p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"

Avatar
ftc
je voudrais savoir s'il existe un contexte d'application.
$GLOBALS ?



Je pense plutôt que Thierry parlait de variables que l'on peut partager
entre les scripts pour n'importe quel visiteur.

En java, lorsqu'on déclare qu'une instance d'un objet a un "scope"
application, la même instance de l'objet est partagée pour tout le monde
pendant la durée de vie de cette application.

PHP ne dispose pas de ce genre de fonctionalité, ce n'est pas à
proprement parler un serveur applicatif. Les scripts sont rechargés à
chaque exécution contrairement aux servlet et jsp ou le serveur se
charge de stocker l'état d'un objet s'il doit être déchargé de la mémoire.

Si on veut un contexte de type application, il faut le gérer soit même.


Avatar
loufoque
Thierry a dit le 03/07/2005 à 13:11:

De la même manière qu'il y a le contexte de requette et le contexte de
session, je voudrais savoir s'il existe un contexte d'application. Et si
oui comment on s'en sert.


On vient d'en parler dans le sujet "Comment conserver une valeur entre
differentes pages sans liens entre elles".

Il y a la solution mémoire partagée posix ou alors faire tourner un
démon qui stockerait les variables dans son espace mémoire à lui et qui
les modifie/donne à la demande.

Avatar
Thierry

je voudrais savoir s'il existe un contexte d'application.
$GLOBALS ?




Je pense plutôt que Thierry parlait de variables que l'on peut partager
entre les scripts pour n'importe quel visiteur.

En java, lorsqu'on déclare qu'une instance d'un objet a un "scope"
application, la même instance de l'objet est partagée pour tout le monde
pendant la durée de vie de cette application.

PHP ne dispose pas de ce genre de fonctionalité, ce n'est pas à
proprement parler un serveur applicatif. Les scripts sont rechargés à
chaque exécution contrairement aux servlet et jsp ou le serveur se
charge de stocker l'état d'un objet s'il doit être déchargé de la mémoire.

Si on veut un contexte de type application, il faut le gérer soit même.


Ce qui m'interesse, c'est de stoquer une variable en memoire une seule
fois. Elle doit etre accessible par tous les utilisateurs, et nons pas à
partir d'une seule session. Est ce que $GLOBALS fait ça ?
En gros je stoque des données sous forme d'arbre. Ces données sont
issues de xml et de mysql. C'est assez long à charger. Or ca ne change
jamais... Pour l'instant je stoque en session, mais chaque utilisateur
doit donc les recharger pour rien...

Titi



Avatar
ftc
Ce qui m'interesse, c'est de stoquer une variable en memoire une seule
fois. Elle doit etre accessible par tous les utilisateurs, et nons pas à
partir d'une seule session. Est ce que $GLOBALS fait ça ?


Non, $GLOBALS ne fait pas cela, $GLOBALS est un tableau représentant les
variables globales à un script.

La solution est de stocker de façon sérialisée dans un fichier ou en
mémoire partagée les variables. ( http://fr.php.net/manual/fr/ref.sem.php )

Avatar
Guillaume Bouchard
ftc wrote:
La solution est de stocker de façon sérialisée dans un fichier ou en
mémoire partagée les variables. ( http://fr.php.net/manual/fr/ref.sem.php )


Attention, extension non disponible sur certaines platoformes.

Maitenant la question à se poser c'est ? L'acces disque de lecture (et
éventuellement de deserialisation) est-t-il si lent qu'il faille tant se
prendre la tête ?

Moi je dis que base de donnée ou fichier, c'est déjà bien. (Après
chaques problèmatique est differentes...)

--
Guillaume.

Avatar
ftc
ftc wrote:

La solution est de stocker de façon sérialisée dans un fichier ou en
mémoire partagée les variables. (
http://fr.php.net/manual/fr/ref.sem.php )



Attention, extension non disponible sur certaines platoformes.


Oui, j'avais oublié de précisé.

Maitenant la question à se poser c'est ? L'acces disque de lecture (et
éventuellement de deserialisation) est-t-il si lent qu'il faille tant se
prendre la tête ?


Vu qu'il ne semble pas y avoir de mise à jour, c'est vrai que de traiter
avec un fichier est plus simple. S'il y a des mises à jour à faire,
autant utiliser la mémoire partagée, ce n'est pas plus complexe et c'est
quand même plus rapide.

J'en profite pour lancer une petite question sur le lock de fichiers en
PHP. J'utilise toujours flock lorsque je doit écrire dans un fichier,
cependant il semble ( d'après la doc ) qu'il n'y en ait besoin que sous
Windows. Quelqu'un aurait des infos ?


Avatar
loufoque
Guillaume Bouchard a dit le 05/07/2005 à 02:29:

Maitenant la question à se poser c'est ? L'acces disque de lecture (et
éventuellement de deserialisation) est-t-il si lent qu'il faille tant se
prendre la tête ?


La meilleure alternative c'est de faire tourner un démon, ce que fait
d'ailleurs cygwin pour émuler la mémoire partagée.
Après il faut pouvoir lancer ce démon.

Avatar
FightClub!

Maitenant la question à se poser c'est ? L'acces disque de lecture (et
éventuellement de deserialisation) est-t-il si lent qu'il faille tant
se prendre la tête ?



Vu qu'il ne semble pas y avoir de mise à jour, c'est vrai que de traiter
avec un fichier est plus simple. S'il y a des mises à jour à faire,
autant utiliser la mémoire partagée, ce n'est pas plus complexe et c'est
quand même plus rapide.



Il y a aussi les tables de type HEAP du coté de MySQL, qui réconcilient
l'accès rapide et le structurel d'une base de données
Mais tout dépend du volume de données à traiter, car la RAM est limitée
aussi :)

--

http://SurveilleTonSite.sd2i.org
Alerte gratuite par mail en cas de problème sur votre site.