Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2007, 00h19   #1
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 3
Points : 3
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 :
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();
tomcoch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 18h34   #2
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 3
Points : 3
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.
tomcoch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 10h14   #3
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
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)
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h38.


 
 
 
 
Partenaires

Hébergement Web