IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Un peu de théorie


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Par défaut Un peu de théorie
    Bonjour,

    Alors voila, je me pose une question et préfère avoir votre avis avant de me lancer la dedans parce que c'est assez complexe.

    Pour optimiser un cms, je suis en train de réécrire tout le code.
    Le seul module restant a refondre est celui des statistiques (nombre de pages vues / connexions / mois)
    Actuellement et comme sur beaucoup de sites, la démarche actuelle est de faire une petite requête sql a chaque page en incrémentant une valeur, rien de bien compliqué en somme.

    Ce que je désirerais faire maintenant est un tout nouveau système basé sur les sessions.
    J'incrémente une valeur dans la session, et quand l'utilisateur se déconnecte -> je met a jour dans la BDD.
    Ça c'est la théorie, parce que dans les faits, peu d'utilisateurs se déconnectent; ils ferment plutot leur navigateur ce qui a pour effet de laisser la session a l'abandon en attendant le garbage collector.
    Le "hic" est que l'on n'a pas du tout accès a ce processus qui est de plus lancé aléatoirement, donc aucun moyen de vider les sessions de leurs variables et de les passer en BDD.

    Je pensais donc faire quelque chose dans ce genre la :
    1) Mettre le session.gc_probability à 0 -> Evite que le garbage collector se mette en route.
    2) Creer un script exécuté toutes les x heures qui effectuerait ceci :

    * - Lister le contenu du repertoire qui contient les sessions pour récuperer tous les identifiants de sessions
    * - Vérifier a l'aide des dates de créations des fichiers si la session est périmée ou non
    * - Envoyer une requete HTTP vers une de mes pages en fournissant l'id des sessions périmées, comme si il venait d'un cookie


    Avec ca, théoriquement, la page php appelée aurait accès a la session, et je pourrais donc vider mes variables avant de faire un session_destroy().

    Vous en pensez quoi ? Possible or not ? ^^ (Si vous avez des autres idées, je suis prenneur ...)
    Merci d'avance !

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Mon avis est que tu veux remplacer "faire une petite requête sql a chaque page en incrémentant une valeur, rien de bien compliqué en somme." par une usine à gaz

    A mon humble avis, il y aura d'autres endroits bien plus importants à optimiser dans ton cms que cette requête !

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    La question qui me vient à l'esprit c'est qu'est ce qui te gène à ce que les sessions ne soient pas immédiatement supprimées dès leur expiration ?

    Aussi, vu que par défaut leur suppression sont basés sur des probabilités (gc_probability, gc_divisor), tu pourrais modifier ces valeurs pour que le garbage collector soit déclenché plus souvent.

    Ceci dit, je ne vois pas trop le rapport entre les [nombre de pages vues / connexions / mois] et la suppressions des sessions expirées.

    Si le but est de savoir très exactement la durée de chaque consultation des pages, peut être, et encore.
    Mais il sera malgré tout impossible de savoir si le visiteur consulte réellement, ou s'il est allé se chercher un café entre temps, et peut être revenu après le temps d'expiration, ou autre scénario encore ...

    Si le visiteur est inactif, par conséquent il ne sollicite pas le serveur, donc il n'y a pas lieu de s'inquiéter de ce coté.
    Chaque session est stockées dans un fichier (ou une Bdd), c'est tout.

    Si le but est d'épurer ces sessions car on a remarqué qu'ils étaient très nombreux, et la plupart étaient expirés, alors suffit d'augmenter la fréquence d'épuration (garbage collector).

  4. #4
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Citation Envoyé par Mr N. Voir le message
    Mon avis est que tu veux remplacer "faire une petite requête sql a chaque page en incrémentant une valeur, rien de bien compliqué en somme." par une usine à gaz

    A mon humble avis, il y aura d'autres endroits bien plus importants à optimiser dans ton cms que cette requête !
    + 1
    Je suis d'accord avec l'avis de Mr N.

    De plus et je cite :

    * - Vérifier a l'aide des dates de créations des fichiers si la session est périmée ou non
    Périmée, oui forcemment sur le serveur, mais pas sur ta bdd si l'id de session a été sauvegardé en même temps.
    Je m'explique :
    Utilisateur : Juju
    Id_session : strumph44
    Variable_1 : truc
    Variable_2 : bidule
    Variable_3 : machin

    Imagine que Juju se reconnecte via ton formulaire.

    Tu vérifies si une session a déjà été ouverte pour Juju ( dans ta table mes_sessions).
    Juju exite dans la table mes_sessions ?
    Ok parfait, tu lances une nouvelle session et en prenant soin d'updater dans la foulée le nouvel id de session WHERE utilisateur = Juju.
    Comme tu le remarques, ta table mes_sessions vient d'être modifiée, uniquement le nouvel Id de session.
    Et tu retrouves toutes ses variables associées à ce nouvel id de session.

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    Si tu as acces a ton repertoire de session c'est que tu as accès aux fichiers de ton serveur web... dans ce cas là, pourquoi ne pas baser tes stats sur le log access d'apache ? C'est super plus simple, et je ne pense pas que tu ais besoin d'une vision des stats au niveau de chaque utilisateur.

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/01/2012, 15h54
  2. un peu de théorie sur le passage des variables
    Par morpheusmg dans le forum C
    Réponses: 3
    Dernier message: 21/02/2011, 21h01
  3. RTL60 ( la jsuis un peu confused)
    Par magdoz dans le forum Outils
    Réponses: 7
    Dernier message: 23/07/2002, 11h20
  4. DirectX 6, un peu en retard ... :\
    Par multani dans le forum DirectX
    Réponses: 3
    Dernier message: 28/05/2002, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo