2009-11-22 6 views
0

quels sont les problèmes de performance lorsque nous stockons 2-3 variables supplémentaires en session ?? pour:Quelles sont les conséquences du stockage de plus de variables en session?

  1. pour enregistrer 1-2 requêtes (par chargement de la page)?

  2. Pour rendre le code plus simple?

Taux de réussite sur le site est normal ..

Modifier @all Je parle de deux à trois variables de session ... des valeurs simples comme nombre, ids etc

Répondre

0

Chaque fois qu'un script/une page PHP utilisant des sessions est accédé, les données de session doivent être lues. Par défaut, ces données sont stockées sur le disque sous forme de fichiers (vous pouvez les remplacer et utiliser une base de données, par exemple)

Donc, pour chaque chargement de page, il faut lire une certaine quantité de données de session (et, très, probable, écrit) par PHP. Plus vous stockez de données dans une session, plus les fichiers de session sont gros.

Si vous stockez seulement quelques variables, il n'y a aucun problème. Mais si vous commencez à stocker quelque chose comme des tableaux énormes, vous rencontrerez des problèmes si votre taux de succès augmente.

-

Si vous voulez « conserver le code plus simple » en stockant autant de données que possible dans une session, vous pouvez créer plus de problèmes à la place. Par exemple, si vous souhaitez activer l'accès API à l'avenir, vous devrez peut-être supprimer un grand nombre de code de stockage/extraction de données de session et le remplacer par d'autres méthodes.

-

Peut-être sans rapport avec votre problème:

Si vous souhaitez stocker une sorte d'état de l'application globale dans une session afin que vous n'avez pas à recalculer, vous devez utiliser d'autres méthodes de mise en cache au lieu de sessions.

0

Il ne serais pas un problème de performance. Vous pouvez stocker des objets et des variables, dans la session, et cela ne ferait pas beaucoup de dégradation des performances.

0

En fait, il semble que vous allez vous épargner un peu, en termes de performances. Si ces valeurs sont des chaînes ou des nombres simples, ou même de petits tableaux ou objets, ce sera votre meilleure option. Toutefois, si vous enregistrez un tableau avec des milliers de paires clé => valeur, il peut être préférable de réexécuter la requête, selon que vous en aurez besoin dans certaines circonstances. N'oubliez pas que chaque fois que vous actualisez, vous allez déclencher le constructeur de chaque objet stocké dans la variable de session. Grands objets = charge utile lourde.

0

Ce n'est pas autant une question de performance que de praticité. C'est évident pour moi en lisant votre question que vous n'envisageriez pas de stocker d'énormes tableaux dans une session. Le problème devient pratique lorsqu'une action d'un autre utilisateur doit influencer les valeurs stockées dans une session en cours, c'est-à-dire un tableau de booléens qui montre ce qu'un utilisateur peut et ne peut pas accéder.Avoir ces cachés dans une session rend les autorisations de révocation impraticables.

Il n'y a aucune raison d'éviter de stocker des chaînes et des valeurs qui sont considérées comme immuables ou qui peuvent facilement être redéfinies par une action de l'utilisateur actuel (c'est-à-dire changer son nom d'utilisateur).

Questions connexes