Utilisation de la variable $_SESSION

Utilisation de la variable $_SESSION - PHP - Programmation

Marsh Posté le 23-12-2010 à 19:05:53    

Bonjour à tous,
 
je suis en train d'utiliser la variable de session et je me demande si  
je ne vais pas rencontrer ses limites.
A savoir, que je stocke dans cette variable différents tableaux dont un qui contient
la liste des fichier d'un répertoire. Soit environs 4ko de noms de fichiers.
Pour certains fichiers je dois stocker des attributs. dans le pire des cas disons
1000 fichiers * 10 octets stockés 10ko.
Bon à l'heure des gigas de ram c'est très peu, le site que je developpe ne recevra pas beaucoup de personnes en meme temps
grand max 100 connections simultanées.
 
Ces manoeuvres me permettent de ne pas acceder continuellement au disque dur de la machine car les listes sont donc en mémoire.
Est ce que la façon de faire vous choque ? est ce que je rencontrerai des difficultés si j'utilise disons 100ko de mémoire par utilisateur ?
La variable session a t'elle une limite de taille ?
 
Merci de vos réponses.
De bonnes fêtes à tous.
 
Mathieu

Reply

Marsh Posté le 23-12-2010 à 19:05:53   

Reply

Marsh Posté le 23-12-2010 à 19:41:05    

Quel est l'intérêt de mettre ça en session??


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-12-2010 à 20:47:54    

L'interet est de ne pas browser le repertoire a chaque chargement de la page.  
en gros j'ai créé des sections qui doivent afficher des document par intervalle ( genre entre le fichier 101 et le fichier 108 ).
Et pour trouver les 8 fichiers de l'exemple je trouve ne peu 'lourd' de lire tout le repertoire a chaque demande d'affichage de section.
Certes avec la puissance des serveurs c'est peut etre pas grand chose mais comme ils contiennent toujours les mêmes fichiers j'ai pensé plutôt les mettre en mémoire.
 
Sais tu s'il y a une limite de taille de cette variable ?

Reply

Marsh Posté le 23-12-2010 à 21:05:37    

Dans ce cas-là mets -les plutôt dans une mémoire partagée style apc, pas dans les sessions de tous tes utilisateurs, non?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 23-12-2010 à 22:00:32    

Je ne sais pas si y a des limites de tailles pour les session (y a sans doute des paramètres sur le serveur) mais j'ai recemment vu que la session admin sur Magento fait plusieurs dizanes de mega ! (bon là c'est abusé)
 
T'as de la marge. Et puis y a des dizaines de caches de tous les cotés.  
 
Sans faire des test de charges en situation réelle, on peut pas vraiment déterminer le plus lourd entre browser un directory et utiliser une "grosse" session  
 
A priori, je dirais que la session est plus rapide car y a qu'un bloc à lire, c'est généralement plus rapide que d'acceder à plusieurs entrées à travers le disque et la montée en charge sera plus linéaire alors que quand t'as beaucoup de fichiers sur un ext3/4 dans un même directory, les perfs s'effondrent.


Message édité par smaragdus le 23-12-2010 à 22:02:18
Reply

Marsh Posté le 23-12-2010 à 22:09:35    

skeye a écrit :

Dans ce cas-là mets -les plutôt dans une mémoire partagée style apc, pas dans les sessions de tous tes utilisateurs, non?


 
Même sans installer APC, un simple file_put_contents/file_get_contents pour stocker/récupérer la liste et basta.


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 23-12-2010 à 22:14:10    

Dj YeLL a écrit :


 
Même sans installer APC, un simple file_put_contents/file_get_contents pour stocker/récupérer la liste et basta.


Ouais et si ya trop de concurence, le fichier va passer son temps à être locké

Reply

Marsh Posté le 24-12-2010 à 00:26:49    

smaragdus a écrit :


Ouais et si ya trop de concurence, le fichier va passer son temps à être locké


 
Son fichier, il ne l'écrit qu'une seule fois... De plus pour l'écriture, il faut utiliser un flag pour locker le fichier, et à la lecture, je ne vois pas pourquoi il le serait.
 


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 24-12-2010 à 14:53:29    

Hey,
 
merci de vos réponses.
Je me sis un peu documenté sur APC que je ne connaissait pas, ma fois ça à l'air d'être pour des scritps qui demandent beaucoup de ressources non ? Le mien est tout basique ( comparaison, génération de tableaux et affichage des éléments du tableau ... ) je pense pas qu'il y ai beaucoup à gratter.  
 
L'avantage réél est'il de partager l'entrée mémoires avec tout les utilisateurs ?  
 
Sinon pour la solution de créer la liste dans un fichier et de la lire, pourquoi pas, à moins que la variable $_Session puisse contenir mes quelques Ko de donnée !! ;)
 
Du coup j'ai appris ce qu'etait l'APC, j'ai modifié des options pour speeder Nautillus sur des dossiers de plus de 2000 fichiers ( j'ai cherché à propos de ce que disait Smaragdus ).  
 
Alors merci à vous !

Reply

Marsh Posté le 24-12-2010 à 14:58:25    

MoutHardware a écrit :

APC [...]L'avantage réél est'il de partager l'entrée mémoires avec tout les utilisateurs ?

 

C'est l'un des avantages. Avec APC tu peux ne lire qu'une fois ton arborescence, la mettre en cache dans une variable, et t'en resservir partout pour tous tes utilisateurs...


Message édité par skeye le 24-12-2010 à 14:58:33

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 24-12-2010 à 14:58:25   

Reply

Marsh Posté le 25-12-2010 à 21:59:46    

skeye a écrit :

Dans ce cas-là mets -les plutôt dans une mémoire partagée style apc, pas dans les sessions de tous tes utilisateurs, non?


+1

MoutHardware a écrit :

Sinon pour la solution de créer la liste dans un fichier et de la lire, pourquoi pas, à moins que la variable $_Session puisse contenir mes quelques Ko de donnée !! ;)
 


Faudrait voir en détail la gestion des sessions. Sur la config que j'utilise au taf les sessions sont stockées sous formes de fichiers plats, sans limitation de taille constatée (testé avec 100 énes de ko).


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed