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 :

Pb lors de l'enregistrement des sessions dans une BDD


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Pb lors de l'enregistrement des sessions dans une BDD
    J'ai choisi pour de multiples raisons d'enregistrer mes sessions dans une base Mysql plutot que d'utiliser la méthode de fichiers pas défaut.
    Ca fonctionne plutôt bien, mais j'ai un souci sur la fonction garbage_collector qui me permettrait de nettoyer les sessions dont la durée de vie a expiré. En effet, cette fonction ne se lance jamais, j'ai trouvé un subterfuge en la lancant à partir de la fonction open mais je me demande tout de même pourquoi ca ne veut pas se lancer sans cet ajout. Je donne le code ci dessous, si quelqu'un trouve l'erreur ca m'enleverait une épine du pied.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    function mysql_session_open($path,$name) {
    	return true;
    }
     
    function mysql_session_close() {
    	return true;
    }
     
    function mysql_session_read($idsession) {
    	if ($dataread=mysql_query("SELECT data FROM cms_sessions WHERE idsession='". $idsession . "'")) {
    		if (mysql_fetch_array($dataread)) {
    			return $dataread['data'];
    		}
    	}
    	return "";
    }
     
    function mysql_session_write($idsession,$data) {
    	if ($dataselect=mysql_query("SELECT idss from cms_sessions where idsession='". $idsession ."'")) {
    		if (mysql_num_rows($dataselect)==0) {
    			if (mysql_query("INSERT INTO cms_sessions (idsession,data,firstconnect, lastconnect,ip) VALUES ('".$idsession."','".$data."',now(),now(),'".$_SERVER['REMOTE_ADDR']."')")) {
    				return true;
    			} else {
    				echo mysql_error();
    				return false;
    			}
    		} else {
    			if ($dataupdate=mysql_query("UPDATE cms_sessions SET data='".$data."',lastconnect=now() WHERE idsession='".$idsession ."'")) {
    				return true;
    			} else return false;				
    		}
    	} else {
    		echo mysql_error();
    		return false;
    	}
    }
     
    function mysql_session_destroy($idsession) {
    	mysql_query("DELETE FROM cms_sessions WHERE where idsession='". $idsession ."'");
    }
     
    function mysql_session_garbage($lifetime) {
    	mysql_query("DELETE FROM cms_sessions WHERE DATE_ADD(lastconnect,INTERVAL 900 second)<now()");
    }	
     
    session_set_save_handler('mysql_session_open','mysql_session_close','mysql_session_read','mysql_session_write','mysql_session_destroy','mysql_session_garbage');
    session_start();

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Finalement la fonction garbage_collector se lancait mais seulement 1 fois sur 100.
    Si ca peut servir à quelqu'un le lancement de cette fonction est paramétrable via les options session.gc_probability et session.gc_divisor.

  3. #3
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    d'ou l'interet de creer un objet ^^ Tu as le __destruct qui est appelé a la fin de ta page ou des que tu détruit ton objet (c'est du PHP5 par contre)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. enregistrer des variables dans une table via requete sql
    Par Echizen1 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/09/2006, 15h15
  2. probleme d'enregistrement des accents dans la BDD
    Par Gloup dans le forum Installation
    Réponses: 1
    Dernier message: 09/07/2006, 21h07

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