Magasin en session de données et stocker dans la base de données Sql pour les données temporaires

StackOverflow https://stackoverflow.com/questions/964476

Question

Je me demande qui est plus efficace, pour stocker des données temporaires (par rapport à cette session) dans une session en utilisant la variable $ _SESSION en PHP ou stocker et récupérer à partir d'une base de données SQL?

Merci pour votre temps.

Était-ce utile?

La solution

Gardez à l'esprit la variable de session est soutenue par un mécanisme de stockage, qui est, lorsque la demande se termine la session s'écrit par le gestionnaire de session, qui est par défaut dans un fichier. A la demande suivante, il est tiré vers l'arrière de ce fichier (ou tout ce que le gestionnaire de session utilise).

Si vous lire et écrire ces données sur chaque demande, il suffit de coller avec les variables $ _SESSION, les frais généraux de connexion, la mise à jour et l'interrogation d'une base de données ne sera pas plus rapide que la valeur par défaut _SESSION $.

Vous probablement jamais à utiliser une base de données session sauvegardée si vous exécutez plusieurs serveurs d'équilibrage de charge et la nécessité de partager les données de session entre eux. Dans ce cas, si vous trouvez les frais généraux des sessions de base de données à ralentir votre site à un degré notable que vous pourriez envisager coller memcached entre votre serveur web et la base de données.

Autres conseils

Je ne sais pas grand-chose au sujet de la lecture à partir d'une base de données ou un fichier, mais je ne pense pas que « l'accès DB est plus lent que les autres » est vrai. Je l'ai appris de mes leçons à l'école que la latence réseau est négligeable par rapport à l'accès E / S. Et si nous utilisons DB pour les sessions, nous avons quelques avantages:

Nous ne devons pas préoccupés par de nombreux serveurs parce qu'il n'y a pas de système de fichier différent.

Je pense aussi que le stockage / lecture quelque chose à / à partir d'une base de données est plus facile qu'un système de fichiers.

En outre, si nous utilisons hébergement mutualisé, le stockage des sessions dans une base de données est un atout majeur pour la sécurité.

si je me trompais, s'il vous plaît me corriger. J'ai encore beaucoup de choses à apprendre. Merci.

Cela dépend vraiment du volume de données que vous souhaitez stocker et la quantité de trafic que vous souhaitez gérer. Si les données sont minimes et le site n'a pas besoin d'échelle au-delà d'un serveur Web, par tous les moyens utilisent le gestionnaire de session par défaut qui écrit les données de session dans le système de fichiers du serveur Web.

Si vous avez besoin à l'échelle au-delà d'une boîte, il est recommandé de stocker vos données de session dans une base de données, soit de la mémoire, comme base de données memcached ou régulière. Vous pouvez remplacer le gestionnaire de session en PHP et écrire votre propre implémentation pour stocker la base de données lors de l'utilisation _SESSION $.

Ce qui est plus efficace dépendra de la quantité de données que vous souhaitez stocker et qu'allez-vous faire avec les données temporaires. J'ai parfois 5 emmagasinés mégas dans les données de session dans le stockage de fichiers et il était un tueur de performance terrible. Mais 5 mégas de l'État est un très grand nombre et vous devriez vraiment pas y arriver.

De toute façon, vous pouvez configurer les sessions PHP pour être stockées dans une table de base de données et obtenir le meilleur des deux mondes.

Cependant, si les données ne sont pas correctement caractéristique d'une session utilisateur, vous ne devez pas utiliser les sessions et utiliser un objet de modèle à la place.

sessions PHP sont plus rapides que l'accès DB. Mais les sessions PHP ont une certaine problèmes connus .

Vous pouvez regarder memcached si vous voulez vraiment temps d'accès rapide, tout en évitant les pièges de la gestion des sessions PHP en même temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top