A votre avis,
question performance / rapidité sur un site qui a du trafic, quel est la solution optimale pour gérer des actions courantes des utilisateurs : recherche sur la BDD directement ou chargement une fois des données en session utilisateur et gestion via les données de session.

4 réponses


Salut,

Via $_SESSION, sans hésiter ! :)
Faire une requête dès que tu as besoin de la moindre info si le site fait du traf' tu images la montée en charge ? ^^

Quels infos dois-tu stocker exactement ?

Moi je considère qu'une requête simple c'est 2 ms et 10 ms si on passe par un orm
Pour les données de session il faut lire un fichier , ça doit tourner autour de 0.1 ms.
Tu as aussi la solution d'utiliser un cache comme memcached, qui doit être encore plus rapide
avec l'avantage de pouvoir être partagé entre plusieurs serveurs contrairement aux sessions.

Merci de vos réponses. Pour répondre à Cyprien, ici il s'agit de gérer un système de Follow. un user peut suivre plusieurs et être suivi par plusieurs users. j'utilise la solution de charger en session (à la connexion du user) ses followers et ses abonnements. ça évite quelques requêtes en BDD quand j'ai des traitements à faire comme lorsqu'un utilisateur clique sur le bouton "suivre" un autre utilisateur par exemple.

Je me demandais si je devais traiter TOUT en session et j'insère juste les données en BDD sans y faire appel pour des find, ou bien alors si je fais appel à la BDD pour tous les traitements.

pour le moment j'ai partagé... j'évite d'apppeler la BDD quand ce n'est pas indispensable et je manipule plutot les données de sessions.

Un exemple concret: Avant de sauvegarder un follow, je vérifie que la personne suivie, n'est pas déjà dans la liste du user en cours. Et bien cette opération je la fais avec les données de session, ça évite d'appeler la BDD.

comme je ne suis pas un spécialiste de l'optimisation, je me demande vraiment ce qui est le plus rapide. Pour le moment, tout bdd ou travail partagé avec les données de session, je n'ai pas noté de gain de vitesse d'execution lorsqu'un User clique sur le bouton suivre.

A noter qu'on peut aussi profiter du query_cache de MySQL. c'est un cache qui stocke les résultats de requêtes tant qu'il n'y a pas eu de modification des données de la table. Pour des requêtes simples on gagne 20 à 30%
L'utilisation des connexions persistantes (pool de connexions) fait gagner aussi 10 à 20%
l'utilisation de requêtes non préparées fait gagner aussi un peu.