Fonctions Session
PHP Manual

session_set_save_handler

(PHP 4, PHP 5)

session_set_save_handlerConfigure les fonctions de stockage de sessions

Description

bool session_set_save_handler ( callback $open , callback $close , callback $read , callback $write , callback $destroy , callback $gc )

session_set_save_handler() configure les fonctions de stockage de sessions, et permet de choisir des fonctions utilisateurs pour sauver et relire toutes les sessions. Cette fonction est très pratique lorsqu'il faut sauver les données de sessions en utilisant une autre technique que le système par fichier fourni par défaut : notamment, stockage en base de données.

Liste de paramètres

open

Fonction d'ouverture, qui fonctionne comme un constructeur dans une classe, et qui est exécutée quand la session est ouverte. La fonction d'ouverture attend deux paramètres : le premier est le chemin de sauvegarde, et le second est le nom de la session.

close

Fonction de fermeture, qui fonctionne comme un destructeur de classe, et qui est exécuté lorsque le script se termine.

read

La fonction de lecture doit toujours retourner une chaîne, pour que le gestionnaire fonctionne comme prévu. Vous devez retourner une chaîne vide s'il n'y a pas de données à lire. Les valeurs retournées par les autres gestionnaires sont converties en booléen avant d'être retournées au script. TRUE pour la réussite, FALSE pour l'échec.

write

Fonction appelée lorsque les données de session sont sauvegardées. Cette fonction attend 2 paramètres : un identifiant et les données associés à ce dernier.

Note:

Le gestionnaire d'écriture n'est pas exécuté tant que le flot de sortie est ouvert. Par conséquent, l'affichage de messages de déboguage durant le gestionnaire d'écriture ne sera donc jamais visible depuis le navigateur. Si vous avez besoin de déboguage, nous vous suggérons d'écrire vos messages dans un fichier.

destroy

Le gestionnaire de destruction est exécuté quand une session est détruite avec la fonction session_destroy(). Il prend l'identifiant de session comme seul paramètre.

gc

Le collecteur est exécuté quand le collecteur de session est appelé, et il prend comme paramètre unique la durée de vie maximale d'une session.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Exemple avec session_set_save_handler()

L'exemple suivant fournit un exemple de stockage des sessions semblable au système par défaut (par fichiers). Cet exemple peut facilement être adapté pour réaliser des sauvegardes en base de données, avec votre serveur préféré.

<?php
function open($save_path$session_name)
{
  global 
$sess_save_path;

  
$sess_save_path $save_path;
  return(
true);
}

function 
close()
{
  return(
true);
}

function 
read($id)
{
  global 
$sess_save_path;

  
$sess_file "$sess_save_path/sess_$id";
  return (string) @
file_get_contents($sess_file);
}

function 
write($id$sess_data)
{
  global 
$sess_save_path;

  
$sess_file "$sess_save_path/sess_$id";
  if (
$fp = @fopen($sess_file"w")) {
    
$return fwrite($fp$sess_data);
    
fclose($fp);
    return 
$return;
  } else {
    return(
false);
  }

}

function 
destroy($id)
{
  global 
$sess_save_path;

  
$sess_file "$sess_save_path/sess_$id";
  return(@
unlink($sess_file));
}

function 
gc($maxlifetime)
{
  global 
$sess_save_path;

  foreach (
glob("$sess_save_path/sess_*") as $filename) {
    if (
filemtime($filename) + $maxlifetime time()) {
      @
unlink($filename);
    }
  }
  return 
true;
}

session_set_save_handler("open""close""read""write""destroy""gc");

session_start();

// Utilisez vos sessions comme d'habitude

?>

Notes

Avertissement

Les gestionnaires d'écriture et de fermeture sont appelés après la destruction des objets depuis PHP 5.0.5. Ces destructeurs peuvent utiliser les sessions mais le gestionnaire de session ne peut pas utiliser les objets. Dans les versions antérieures, ils étaient appelés dans l'ordre inverse.

Il est possible d'appeler session_write_close() depuis le destructeur pour résoudre ce problème.

Avertissement

Le dossier de travail courant change suivant les SAPIs si la session est fermée à la fin du script. Il est possible de fermer la session plus tard, grâce à la fonction session_write_close().

Voir aussi


Fonctions Session
PHP Manual