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 ...)
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 ...)
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 ...)
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
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.
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
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.
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.
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.
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.
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.
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.
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..
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..
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..
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
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 ...
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
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+
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+
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+
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...
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...
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...
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
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
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
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.
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.
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.