OVH Cloud OVH Cloud

Taille limite fichier de session ?

11 réponses
Avatar
Yttrium
Bonjour,

J'utilise les sessions PHP sur un intranet pour stocker des tableaux de
données assez complexes et assez volumineux.

Apres avoir parcouru quelques dizaines de pages sur mon site, le fichier
de session stocké sur le serveur atteint vite les 500 - 700 Ko.

Est ce problématique,cela peut il nuire sérieusement aux performances ?
Quelle est votre opinion sur ce point ?

Je précise toutefois que l'intranet en question reste trés peu sollicité.

D'avance merci de vos réponses.

Cordialement.



--
[- Yttrium - http://www.danstesyeux.com -]
Le temps ne fait rien à l'affaire, quand on est con...
on est con...

10 réponses

1 2
Avatar
Kupee
Bonjour,

J'utilise les sessions PHP sur un intranet pour stocker des tableaux de
données assez complexes et assez volumineux.

Apres avoir parcouru quelques dizaines de pages sur mon site, le fichier
de session stocké sur le serveur atteint vite les 500 - 700 Ko.

Est ce problématique,cela peut il nuire sérieusement aux performances ?
Quelle est votre opinion sur ce point ?

Je précise toutefois que l'intranet en question reste trés peu sollicité.


Très impactant au niveau performances oui, tu peux mesurer le temps pour
exécuter la méthode session_start() tu verras, en plus si tu as des
frames elles ne seront exécutées que successivement car les sessions
sont lockées pendant le temps ou elles sont ouvertes (sauf si tu demande
une ouverture readonly mais bon tu pourras plus écrire dedans ...)

Avatar
Bobe
Yttrium nous a dit le 07.06.2006 17:20:
Est ce problématique,cela peut il nuire sérieusement aux performances ?
Quelle est votre opinion sur ce point ?


À mon avis, la seule limite réelle se trouve au niveau de l'espace
disque disponible donc pas d'inquiétude à avoir.

--
Aurélien Maille

Avatar
Kupee
Yttrium nous a dit le 07.06.2006 17:20:
Est ce problématique,cela peut il nuire sérieusement aux performances ?
Quelle est votre opinion sur ce point ?


À mon avis, la seule limite réelle se trouve au niveau de l'espace
disque disponible donc pas d'inquiétude à avoir.


Au contraire, faut pas oublier que 1 Mo de Session est désérialisé et
resérialisé a l'ouverture et la fermeture de la page, ca peut etre très
pénalisant, plus que rechercher les données dans une base. La base de
données est optimisée pour stocker des informations, la session ne l'est
pas.


Avatar
superfc
Au contraire, faut pas oublier que 1 Mo de Session est désérialisé et
resérialisé a l'ouverture et la fermeture de la page, ca peut etre très
pénalisant, plus que rechercher les données dans une base. La base de
données est optimisée pour stocker des informations, la session ne l'est
pas.


Et oui, et surtout, la base donnée c'est là pour ça...

Autant indexer les donndées dans la base de données avec
l'identifiant de session. C'est complètement absurde d'utiliser les
sessions pour faires des lourds traitement. Il faut n'y stocker que des
données redondantes et légères.

Avatar
Yttrium
Au contraire, faut pas oublier que 1 Mo de Session est désérialisé et
resérialisé a l'ouverture et la fermeture de la page, ca peut etre très
pénalisant, plus que rechercher les données dans une base. La base de
données est optimisée pour stocker des informations, la session ne l'est
pas.


Et oui, et surtout, la base donnée c'est là pour ça...

Autant indexer les donndées dans la base de données avec
l'identifiant de session. C'est complètement absurde d'utiliser les
sessions pour faires des lourds traitement. Il faut n'y stocker que des
données redondantes et légères.


Certes, mais cela dépend du contexte..
Et ta réponse peut ,dans certains cas n'avoir aucun sens elle non plus.

Je m'explique :

Je réalise une requête qui travaillle sur plus de 10 tables MySql.
L'execution de cette requête est extrement longue.
J'affiche les résultats dans une tableau HTML.
Mais j'ai besoin de pourvoir modifier la colonne sur laquelle je trie ce
tableau.

Donc, lorsque j'execute ma requête, je stocke tous les résultats dans un
array que je place en session.

Lorsque j'ai besoin de trier mon tableau sur une autre colonne, je ne
trie que mon array ,sans réexecuter ma requete qui prend plusieurs
minutes ...

Voila l'interet de la maniplation.

C'est plsu clair comme ceci ?

Je précise qu'il s'agit d'un intranet de reporting..


Avatar
Calimero
Yttrium wrote:

Je réalise une requête qui travaillle sur plus de 10 tables MySql.
L'execution de cette requête est extrement longue.


Avec les bons indexes et la bonne forme de requête établis à coups de
EXPLAIN ?

J'affiche les résultats dans une tableau HTML.
Mais j'ai besoin de pourvoir modifier la colonne sur laquelle je trie ce
tableau.

Donc, lorsque j'execute ma requête, je stocke tous les résultats dans un
array que je place en session.

Lorsque j'ai besoin de trier mon tableau sur une autre colonne, je ne
trie que mon array ,sans réexecuter ma requete qui prend plusieurs
minutes ...


memcached ?

--
@+
Calimero

Avatar
Jahjah92
moi j'dis ça comme ça , sans méchanceté aucune :
- une requête de "plusieurs minutes" même avec mysql , même avec 10 tables ,
même des milliers de lignes = j'ai jamais vu
-> c peut-être qu'ils à trop de résultats retournés à la fois : tu peux p-ê
envisager de la pagination.
( j'veux dire que la requete est ok, mais le transfert est long ?)
-> as tu posé des index sur les colonnes les plus significatives pour tes
requêtes ?, ça optimise pas mal les temps de réponse
-> utilises tu des "select *" à tout va pour pas t'embêter?
-> est-ce un serveur BDD en production, ou de tests ( genre j'fais mes tests
sur xp, mais à la fin ça tourne sur linux tt seul )

Enfin, tout ça tout ça pour dire que même en reporting il y a beaucoup de
donner à croiser mais ça prend pas des minutes ( et le timeout il dit quoi
au fait ? ). Et c'est pas agressif, j'essaie juste de comprendre , et si tu
le veux de t'aider.
A+
Avatar
Yttrium
moi j'dis ça comme ça , sans méchanceté aucune :
- une requête de "plusieurs minutes" même avec mysql , même avec 10 tables ,
même des milliers de lignes = j'ai jamais vu
Ah bon ??


-> c peut-être qu'ils à trop de résultats retournés à la fois : tu peux p-ê
envisager de la pagination.
( j'veux dire que la requete est ok, mais le transfert est long ?)
Ca c'ets possible.


-> as tu posé des index sur les colonnes les plus significatives pour tes
requêtes ?, ça optimise pas mal les temps de réponse
Oui, c'est fait bien sur.



-> utilises tu des "select *" à tout va pour pas t'embêter?
Non, je ne ramène que les champs qui vont bien.



-> est-ce un serveur BDD en production, ou de tests ( genre j'fais mes tests
sur xp, mais à la fin ça tourne sur linux tt seul )


Oui, c'est sur un serveur de dev pas trés puissant.


Enfin, tout ça tout ça pour dire que même en reporting il y a beaucoup de
donner à croiser mais ça prend pas des minutes ( et le timeout il dit quoi
au fait ? ). Et c'est pas agressif, j'essaie juste de comprendre , et si tu
le veux de t'aider.


Le timeout a été augmenté.

Mais la question ne concernanit pas tant le temps de traitement, mais
plutot la taille des fichiers de session..

Merci tout de même pour votre aide.

A+





--
[- Yttrium - http://www.danstesyeux.com -]
Le temps ne fait rien à l'affaire, quand on est con...
on est con...

Avatar
Jahjah92
Tu dit :
Mais la question ne concernait pas tant le temps de traitement, mais plutot
la taille des fichiers de session..


Et ma réponse partait du principe que ce n'était pas une bonne solution de
stocker tout ça en session , comme indiqué par kupee et superfc...
Je sais que c'est pas facile de revenir en arrière quand on a fait un choix
techno, mais il y a des choses qui marchent, d'autres non.
The End

Avatar
Kupee
Certes, mais cela dépend du contexte..
Et ta réponse peut ,dans certains cas n'avoir aucun sens elle non plus.

Je m'explique :

Je réalise une requête qui travaillle sur plus de 10 tables MySql.
L'execution de cette requête est extrement longue.
J'affiche les résultats dans une tableau HTML.
Mais j'ai besoin de pourvoir modifier la colonne sur laquelle je trie ce
tableau.

Donc, lorsque j'execute ma requête, je stocke tous les résultats dans un
array que je place en session.

Lorsque j'ai besoin de trier mon tableau sur une autre colonne, je ne
trie que mon array ,sans réexecuter ma requete qui prend plusieurs
minutes ...

Voila l'interet de la maniplation.

C'est plsu clair comme ceci ?

Je précise qu'il s'agit d'un intranet de reporting..


Il sera peut etre plus efficace de gérer le résultat de cette requete en
le collant dans une table spécialement prévu pour car la session est
vraiment le contraire du truc efficace pour stocker des données, c'est
très lent et en plus si tu as plusieurs frames ou plusieurs navigateurs
sur la même session ils doivent s'actualiser les uns après les autres et
jamais en même temps.

1 2