... et à une connexion donnée.
Par exemple, si on veut partager une
donnée propre à l'application (comme le nombre de visiteurs) il ne me
semble pas que l'on puisse utiliser l'objet $_SESSION dans ce cas,
quelle serait la solution appropriée dans ce cas?
Par exemple si on veut afficher le prénom de l'utilisateur sur chaque
page du site, une solution serait de stocker le prénom en session à
chaque authentification de l'utilisateur. Dans ce cas l'appel à la base
de données ne se fait qu'une seule fois : lors de l'authentification.
Quand PHP et Mysql sont sur le même serveur,
... et à une connexion donnée.
Par exemple, si on veut partager une
donnée propre à l'application (comme le nombre de visiteurs) il ne me
semble pas que l'on puisse utiliser l'objet $_SESSION dans ce cas,
quelle serait la solution appropriée dans ce cas?
Par exemple si on veut afficher le prénom de l'utilisateur sur chaque
page du site, une solution serait de stocker le prénom en session à
chaque authentification de l'utilisateur. Dans ce cas l'appel à la base
de données ne se fait qu'une seule fois : lors de l'authentification.
Quand PHP et Mysql sont sur le même serveur,
... et à une connexion donnée.
Par exemple, si on veut partager une
donnée propre à l'application (comme le nombre de visiteurs) il ne me
semble pas que l'on puisse utiliser l'objet $_SESSION dans ce cas,
quelle serait la solution appropriée dans ce cas?
Par exemple si on veut afficher le prénom de l'utilisateur sur chaque
page du site, une solution serait de stocker le prénom en session à
chaque authentification de l'utilisateur. Dans ce cas l'appel à la base
de données ne se fait qu'une seule fois : lors de l'authentification.
Quand PHP et Mysql sont sur le même serveur,
La session n'est pas un système de cache.
C'est un détournement du mécanisme standard des sessions. Une session
est l'ensemble des données relatives à l'état de ton application.
La session n'est pas un système de cache.
C'est un détournement du mécanisme standard des sessions. Une session
est l'ensemble des données relatives à l'état de ton application.
La session n'est pas un système de cache.
C'est un détournement du mécanisme standard des sessions. Une session
est l'ensemble des données relatives à l'état de ton application.
Je viens de lire qu'en JSP il existait des sessions globales, ça
s'appele des portées "application". Il se trouve que de tels objets me
seraient bien utiles en php,
avez vous une idée comment implémenter
correctement de tels objets qui seraient accessibles en lecture et en
écriture par tous mes scripts?
C'est quand même étonnant qu'il n'y ait
pas un tableau prévu à cet effet genre $_APPLICATION.
Je viens de lire qu'en JSP il existait des sessions globales, ça
s'appele des portées "application". Il se trouve que de tels objets me
seraient bien utiles en php,
avez vous une idée comment implémenter
correctement de tels objets qui seraient accessibles en lecture et en
écriture par tous mes scripts?
C'est quand même étonnant qu'il n'y ait
pas un tableau prévu à cet effet genre $_APPLICATION.
Je viens de lire qu'en JSP il existait des sessions globales, ça
s'appele des portées "application". Il se trouve que de tels objets me
seraient bien utiles en php,
avez vous une idée comment implémenter
correctement de tels objets qui seraient accessibles en lecture et en
écriture par tous mes scripts?
C'est quand même étonnant qu'il n'y ait
pas un tableau prévu à cet effet genre $_APPLICATION.
Par exemple, si on veut partager une
donnée propre à l'application (comme le nombre de visiteurs) il ne me
semble pas que l'on puisse utiliser l'objet $_SESSION dans ce cas,
quelle serait la solution appropriée dans ce cas?
Ça dépend si on veut quelque chose de fiable ou non.Par exemple si on veut afficher le prénom de l'utilisateur sur chaque
page du site, une solution serait de stocker le prénom en session à
chaque authentification de l'utilisateur. Dans ce cas l'appel à la base
de données ne se fait qu'une seule fois : lors de l'authentification.
La session n'est pas le bon endroit pour cacher les informations. Si tu
as besoin d'un cache, il faut utiliser un outil comme memcache.
Par exemple, si on veut partager une
donnée propre à l'application (comme le nombre de visiteurs) il ne me
semble pas que l'on puisse utiliser l'objet $_SESSION dans ce cas,
quelle serait la solution appropriée dans ce cas?
Ça dépend si on veut quelque chose de fiable ou non.
Par exemple si on veut afficher le prénom de l'utilisateur sur chaque
page du site, une solution serait de stocker le prénom en session à
chaque authentification de l'utilisateur. Dans ce cas l'appel à la base
de données ne se fait qu'une seule fois : lors de l'authentification.
La session n'est pas le bon endroit pour cacher les informations. Si tu
as besoin d'un cache, il faut utiliser un outil comme memcache.
Par exemple, si on veut partager une
donnée propre à l'application (comme le nombre de visiteurs) il ne me
semble pas que l'on puisse utiliser l'objet $_SESSION dans ce cas,
quelle serait la solution appropriée dans ce cas?
Ça dépend si on veut quelque chose de fiable ou non.Par exemple si on veut afficher le prénom de l'utilisateur sur chaque
page du site, une solution serait de stocker le prénom en session à
chaque authentification de l'utilisateur. Dans ce cas l'appel à la base
de données ne se fait qu'une seule fois : lors de l'authentification.
La session n'est pas le bon endroit pour cacher les informations. Si tu
as besoin d'un cache, il faut utiliser un outil comme memcache.
J'ai testé memcached et réalisé quelques tests :
L'accès aux données avec les sessions est presque 100 fois plus rapide
qu'avec memcached. Et si j'utilise les sockets unix avec memcached je
passe de 3800 ms à 2800 ms. Bien sûr cela ne signifie pas que memcached
est plus gourmand en ressource que la serialisation, mais les temps de
réponse du fait de l'utilisation des sockets sont nettement plus
importants. Que faut il privilégier, le temps de réponse du script php,
l'utilisation du processeur, la consommation mémoire? Pour information,
je suis en train de coder un site qui a vocation à accueillir un fort
trafic (10000 connectés en simultanés pendant les heures de pointe)
c'est pour cette raison que je suis très soucieux de la montée en charge
du serveur.
J'ai testé memcached et réalisé quelques tests :
L'accès aux données avec les sessions est presque 100 fois plus rapide
qu'avec memcached. Et si j'utilise les sockets unix avec memcached je
passe de 3800 ms à 2800 ms. Bien sûr cela ne signifie pas que memcached
est plus gourmand en ressource que la serialisation, mais les temps de
réponse du fait de l'utilisation des sockets sont nettement plus
importants. Que faut il privilégier, le temps de réponse du script php,
l'utilisation du processeur, la consommation mémoire? Pour information,
je suis en train de coder un site qui a vocation à accueillir un fort
trafic (10000 connectés en simultanés pendant les heures de pointe)
c'est pour cette raison que je suis très soucieux de la montée en charge
du serveur.
J'ai testé memcached et réalisé quelques tests :
L'accès aux données avec les sessions est presque 100 fois plus rapide
qu'avec memcached. Et si j'utilise les sockets unix avec memcached je
passe de 3800 ms à 2800 ms. Bien sûr cela ne signifie pas que memcached
est plus gourmand en ressource que la serialisation, mais les temps de
réponse du fait de l'utilisation des sockets sont nettement plus
importants. Que faut il privilégier, le temps de réponse du script php,
l'utilisation du processeur, la consommation mémoire? Pour information,
je suis en train de coder un site qui a vocation à accueillir un fort
trafic (10000 connectés en simultanés pendant les heures de pointe)
c'est pour cette raison que je suis très soucieux de la montée en charge
du serveur.
On 16/01/11 23:11, Julien Arlandis wrote:
J'ai testé memcached et réalisé quelques tests :
L'accès aux données avec les sessions est presque 100 fois plus rapide
qu'avec memcached. Et si j'utilise les sockets unix avec memcached je
passe de 3800 ms à 2800 ms. Bien sûr cela ne signifie pas que memcached
est plus gourmand en ressource que la serialisation, mais les temps de
réponse du fait de l'utilisation des sockets sont nettement plus
importants. Que faut il privilégier, le temps de réponse du script php,
l'utilisation du processeur, la consommation mémoire? Pour information,
je suis en train de coder un site qui a vocation à accueillir un fort
trafic (10000 connectés en simultanés pendant les heures de pointe)
c'est pour cette raison que je suis très soucieux de la montée en charge
du serveur.
Attention à ce que tu mesures. Le tableau de session est déjà
déserialisé quand on y accède en PHP. La déserialisation se fait à
l'ouverture de la session. Du coup tu utilises un tablean PHP.
Lorsque tu sauvegardes les données dans Memcache, tu sérialises (car tu
ne peux que sauver des chaines de caractères).
10 000 connectés simultanés n'entraîne pas nécessairement un fort trafic
;) Ceci dit, si ton application doit être scalable, il faudra une
infrastructure scalable (backend de session adapté, caches répartis,
base de données shardable, etc). Et ça sort, je pense, du cadre de ce
forum.
On 16/01/11 23:11, Julien Arlandis wrote:
J'ai testé memcached et réalisé quelques tests :
L'accès aux données avec les sessions est presque 100 fois plus rapide
qu'avec memcached. Et si j'utilise les sockets unix avec memcached je
passe de 3800 ms à 2800 ms. Bien sûr cela ne signifie pas que memcached
est plus gourmand en ressource que la serialisation, mais les temps de
réponse du fait de l'utilisation des sockets sont nettement plus
importants. Que faut il privilégier, le temps de réponse du script php,
l'utilisation du processeur, la consommation mémoire? Pour information,
je suis en train de coder un site qui a vocation à accueillir un fort
trafic (10000 connectés en simultanés pendant les heures de pointe)
c'est pour cette raison que je suis très soucieux de la montée en charge
du serveur.
Attention à ce que tu mesures. Le tableau de session est déjà
déserialisé quand on y accède en PHP. La déserialisation se fait à
l'ouverture de la session. Du coup tu utilises un tablean PHP.
Lorsque tu sauvegardes les données dans Memcache, tu sérialises (car tu
ne peux que sauver des chaines de caractères).
10 000 connectés simultanés n'entraîne pas nécessairement un fort trafic
;) Ceci dit, si ton application doit être scalable, il faudra une
infrastructure scalable (backend de session adapté, caches répartis,
base de données shardable, etc). Et ça sort, je pense, du cadre de ce
forum.
On 16/01/11 23:11, Julien Arlandis wrote:
J'ai testé memcached et réalisé quelques tests :
L'accès aux données avec les sessions est presque 100 fois plus rapide
qu'avec memcached. Et si j'utilise les sockets unix avec memcached je
passe de 3800 ms à 2800 ms. Bien sûr cela ne signifie pas que memcached
est plus gourmand en ressource que la serialisation, mais les temps de
réponse du fait de l'utilisation des sockets sont nettement plus
importants. Que faut il privilégier, le temps de réponse du script php,
l'utilisation du processeur, la consommation mémoire? Pour information,
je suis en train de coder un site qui a vocation à accueillir un fort
trafic (10000 connectés en simultanés pendant les heures de pointe)
c'est pour cette raison que je suis très soucieux de la montée en charge
du serveur.
Attention à ce que tu mesures. Le tableau de session est déjà
déserialisé quand on y accède en PHP. La déserialisation se fait à
l'ouverture de la session. Du coup tu utilises un tablean PHP.
Lorsque tu sauvegardes les données dans Memcache, tu sérialises (car tu
ne peux que sauver des chaines de caractères).
10 000 connectés simultanés n'entraîne pas nécessairement un fort trafic
;) Ceci dit, si ton application doit être scalable, il faudra une
infrastructure scalable (backend de session adapté, caches répartis,
base de données shardable, etc). Et ça sort, je pense, du cadre de ce
forum.
Conclusion, la sérialisation ne doit avoir lieu qu'une seule fois, php
doit faire un get à l'ouverture de la session et un set à la fermeture.
Pour le backend de session je pense qu'un serveur memcache devrait
largement suffire,
pour la répartition des caches je n'ai pas encore
réfléchi à la question, que me conseillez vous?
Sur mon site les membres
sont appelés à uploader des documents qui seront accessibles en lecture
via un flush php. Je pense qu'il faudrait stocker les fichiers sur un
serveur à part mais comment éviter le goulot d'étranglement sur les I/O
du disque dur ?
Pour les bases de données j'ai pensé mettre mysql en cluster.
Conclusion, la sérialisation ne doit avoir lieu qu'une seule fois, php
doit faire un get à l'ouverture de la session et un set à la fermeture.
Pour le backend de session je pense qu'un serveur memcache devrait
largement suffire,
pour la répartition des caches je n'ai pas encore
réfléchi à la question, que me conseillez vous?
Sur mon site les membres
sont appelés à uploader des documents qui seront accessibles en lecture
via un flush php. Je pense qu'il faudrait stocker les fichiers sur un
serveur à part mais comment éviter le goulot d'étranglement sur les I/O
du disque dur ?
Pour les bases de données j'ai pensé mettre mysql en cluster.
Conclusion, la sérialisation ne doit avoir lieu qu'une seule fois, php
doit faire un get à l'ouverture de la session et un set à la fermeture.
Pour le backend de session je pense qu'un serveur memcache devrait
largement suffire,
pour la répartition des caches je n'ai pas encore
réfléchi à la question, que me conseillez vous?
Sur mon site les membres
sont appelés à uploader des documents qui seront accessibles en lecture
via un flush php. Je pense qu'il faudrait stocker les fichiers sur un
serveur à part mais comment éviter le goulot d'étranglement sur les I/O
du disque dur ?
Pour les bases de données j'ai pensé mettre mysql en cluster.