Gérer les options d’utilisateurs en PHP

Le 2 août 2011 — par

Bonjour mes petits pandas. Comme vous le savez sûrement, cette première partie de l’année 2011 a été très productive pour moi, entre le développement (et le lancement) de la nouvelle version de BetaSeries suivie de près par celle de VDM il n’y avait pas de quoi chômer.

Un des points communs de ces deux nouvelles versions est l’utilisation intensive des options de personnalisation du site en fonction de l’utilisateur identifié (surtout sur BetaSeries comme vous pouvez l’imaginer si vous connaissez un peu le concept).

J’ai développé une méthode qui permet de limiter au maximum les appels à la base de donnée pour gérer les options de l’utilisateur et agir en fonction. Ça fonctionne et c’est rapide, alors je partage avec vous.

La table MySQL

La table n’a rien d’extraordinaire, on a d’un côté l’ID de l’utilisateur, puis le nom de l’option, enfin sa valeur.

À vous de développer une petite nomenclature pour ne pas vous perdre dans les noms des options que vous proposerez à vos utilisateurs.

Fonctions basiques

Évidemment, la base pour gérer des options d’un utilisateur, c’est tout d’abord de donner une valeur à une option d’un certain nom, pour un certain ID.

En plus de mettre l’option dans la table users_options, on la met en session dans un tableau options, pour être sûr qu’elle ne rentre pas en collision avec d’autres éventuelles valeur de session.

Puis le script pour récupérer la valeur d’une option :

La fonction sert principalement à aller voir dans la table MySQL au cas où la valeur ne soit pas déjà dans la session de l’utilisateur.

Fonctions utiles

Et là Gui, j’vais vous surprendre : Les fonctions utiles sont vraiment utiles !

Tout d’abord getOptions(), qu’il est préférable d’appeler vers le début de chacune de vos pages. Cette fonction va vérifier que le tableau options existe, à défaut il le remplira des valeurs trouvées dans MySQL.

Une autre fonction utile pour effacer une option. Pour rappel, la fonction getOption() possède un paramètre qui permet de définir une valeur par défaut, dans le cas où l’utilisateur n’a rien configuré. Pratique pour éviter de remplir des centaines de milliers de valeurs par défaut dans la table.

Enfin, du memcache

Je ne pouvais pas finir cet article sans vous parler un peu de memcache. Il y a toujours un moyen de l’utiliser quelque part !

Même dans ce cas précis où tout se repose sur les sessions. Par défaut, PHP utilise /tmp pour stocker ses sessions, se reposant sur le disque dur, ce qui n’est parfois pas l’ami des performances.

Je vous conseille donc d’utiliser memcache en modifiant votre php.ini ainsi, à la section Session, en remplaçant les valeurs éventuellement existantes dans votre fichier actuel :

N’oubliez pas de remplacer 127.0.0.1 et 9000 par les données de votre serveur memcache.

<

p>Si vous n’avez pas memcache installé, vous pouvez au moins monter une partition tmpfs avec mount -t tmpfs tmpfs suivi du répertoire de votre choix, puis de le spécifier dans votre php.ini.

Dès que j’ai un peu de temps je vous parlerai de LESS, ou… d’autre chose, peut-être.

S'abonner au flux RSS du blog
Recevoir les nouveaux articles par e-mail :