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 :

Fonction à la fermeture des sessions


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 Fonction à la fermeture des sessions
    Bonjour,

    Voila, actuellement sur mes sites, pour compter le nombre de page vues ou de visites, j'effectue tout simplement une petite requête SQL ou j'incrémente le nombre de visites précédentes.

    Cela marche très bien, mais pour des raisons d'optimisation, j'aimerais effectué une seule requête par session utilisateur (en incrémentant une variable dans ma session, et quand la session se supprime, additionner ce nombre avec celui déjà présent dans la BDD).

    Seulement, je ne sais pas comment faire pour dire a PHP d'exécuter ma fonction qui sauvegardera dans la BDD le nombre de pages vues une seule fois par session et a la fin de la vie de la session, a sa suppression par exemple.

    Je vous demande donc si vous avez des idées, ou alors une fonction PHP appelée lors de la suppression des sessions.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il n'est pas possible a ma connaissance d'intercepter la mise au rebut des sessions.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    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 Land3r Voir le message
    ... (en incrémentant une variable dans ma session, et quand la session se supprime, additionner ce nombre avec celui déjà présent dans la BDD).
    Slt

    Oui, et de plus, ta variable incrémentée dans ta session serait aussi détruite si la session était supprimée, donc inexploitable.

    Une solution, c'est d'obliger l'utilisateur à se déconnecter manuellement et intentionnellement, auquel cas au clic bouton, tu peux créer un script qui gére tes mises à jour finales.
    Mais j'en doute vu que nombreux quitteront le navigateur et négligeront l'invitation à se déconnecter.

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Par défaut
    Salut.
    Je pense que c'est possible si ma foi j'ai bien compris le problème!
    Tu devrais creer a l'ouverture d'une session une variable de session. Ensuite dans toutes tes page tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if (isset$_SESSION['var'])
    {
    // le code du compteur pour les mebres.
    }
    else
    {
    // code a executer pour les non-membre
    }
    Est-ce ce dont tu as besoins?

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 323
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 323
    Billets dans le blog
    17
    Par défaut
    Comme le dit sabotage on ne peut pas intercepter la destruction des sessions, par contre on peut redéfinir la manière dont elles seront manipulées avec session_set_save_handler( ), notamment pour toi callbacks $destroy et $gc.
    Cependant le garbage collector étant appelé aléatoirement les stats de consultation ne seront pas en temps réel.
    A tester

  6. #6
    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
    Sinon, j'ai pensé a une solution qui risque d'être plus simple a implémenter, mais qui risque de consommer plus.

    Voila, je crée un répertoire temp, ou je crée pour chaque session créée, donc pour chaque visiteur en ligne, un fichier nommé avec le session_id et dedans le nombre 1 (1ere page vue vu que création de la session)

    A chaque fois que la personne va voir une page, j'incrémente la valeur contenue dans ce fichier.

    Jusque la aucun problème. Ensuite via un script bash inséré dans ma crontab, je fait appel a une page php environ toutes les 5 minutes. Cette page va comparer les répertoires : celui ou sont stockées mes sessions php, et le répertoire temp avec mes fichiers contenant le nombre de pages vues.
    Théoriquement, a chaque fichier contenu dans temp, il doit correspondre une session. Lorsque je ne trouve pas cette correspondance, cela impliquerait donc que la session a été détruite ou alors session_regenerate_id(), mais si l'id a changé, il n'y a pas de problème, car cela va relancer une instance avec temp.
    Donc si je ne trouve pas de correspondance, il me suffit alors de lire le fichier temp correspondant, et de rajouter la valeur dans la BDD

    Qu'en pensez vous ? (Ce n'est que théorique pour l'instant ^^')

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2010, 16h24
  2. Connexion Oracle - Non fermeture des sessions
    Par hedgehog dans le forum Oracle
    Réponses: 1
    Dernier message: 20/04/2010, 11h25
  3. fermeture des sessions
    Par amarkamel dans le forum Débuter
    Réponses: 3
    Dernier message: 05/08/2009, 18h16
  4. Durée de vie des sessions et fermeture du navigateur
    Par taffMan dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2008, 11h05
  5. [Hibernate][Struts] Fermeture des session hibernate
    Par osopardo dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/08/2005, 17h30

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