54 votes

Y a-t-il des limites pour les variables de session ?

Comme le dit le titre, y a-t-il des limites (s'il y en a) pour les variables de session ou sont-elles considérées comme des habituel variables et peuvent stocker une quantité égale de données ?

Je cherche à savoir s'il existe d'autres limites que celles de type variable, comme la longueur maximale, les valeurs maximales, etc.

P.S. Si la question n'est pas claire, veuillez me le faire savoir.

Merci d'avance !

53voto

Piskvor Points 46986

Comme l'a dit @Thariama, il n'y a pas de limite au nombre de variables ; de même, il n'y a pas de limite à la quantité de données que vous pouvez stocker dans une session (j'ai vu des sessions de plusieurs dizaines de Mo).

Cependant, à mesure que la taille d'une session augmente, vous rencontrerez divers problèmes : PHP 5 désérialise la totalité de la session en mémoire à session_start() (en utilisant le gestionnaire de session par défaut - vous pouvez créez votre propre solution ) ; avec une session de 20 MB et 50 utilisateurs simultanés, vos scripts commencent à être sévèrement limités par les vitesses d'accès au disque (a.k.a.. "scripts startup is slow as molasses" - les sessions seules accapareraient un Go de RAM) ; à la fin, nous avons dédié une boîte pour garder autant de sessions que possible dans sa RAM, et les boîtes frontales y accédaient par NFS (bien que cela ait aidé dans notre cas, cela peut être excessif pour vous).

Notez que pour un grand nombre d'utilisateurs simultanés et un stockage de la session sur le disque, le nombre de fichiers temporaires de la session peut poser des problèmes avec les limites du système de fichiers (par exemple, combien de fichiers peuvent se trouver dans un répertoire avant de rencontrer des problèmes de stat() performance ), ou d'autres limites (nous avons découvert à nos dépens qu'une boîte était configurée pour n'autoriser que 4096 fichiers ouverts en même temps). Rien de tout cela n'est vraiment spécifique à la session, mais peut être déclenché par la gestion de la session.

15voto

Thariama Points 26420

Non, il n'y a pas de limite à l'espace qu'une session peut avoir (ou au nombre de variables qu'une session peut posséder). La seule limite est celle de votre ordinateur, qui est définie par votre limite de mémoire disponible dans votre php.ini . Sachez que cet espace sera partagé entre toutes les sessions de tous les utilisateurs.

8voto

shamittomar Points 20136

Il est totalement spécifique à votre serveur web. Pour Apache, regardez ici :

http://httpd.apache.org/docs/trunk/mod/mod_session.html

Il a même permet de stocker les sessions dans la base de données en utilisant mod_session_dbd . Par conséquent, les limites physiques comme un fichier par session peuvent être dépassées. De plus, Apache peut être configuré pour garder la trace des sessions par utilisateur stockées sur un serveur particulier ou un groupe de serveurs pour des raisons d'évolutivité.

3voto

Matthew Points 25748

La réponse simple est non (c'est-à-dire qu'ils n'ont pas plus de restrictions que n'importe quelle autre variable PHP... doit tenir dans la mémoire, etc...).

Cependant, gardez à l'esprit que $_SESSION les données sont stockées quelque part, par défaut sous forme de données sérialisées dans un fichier par session. Il y a donc des limites pratiques. Vous ne voudriez pas y stocker une énorme masse d'informations, car elles seraient chargées/sauvegardées à partir du magasin de données sur chaque page qui utilise des fichiers de type session_start() .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X