Description
bool 
session_set_save_handler ( callback open, callback close, callback read, callback write, callback destroy, callback gc )
     session_set_save_handler() sets the user-level
     session storage functions which are used for storing and
     retrieving data associated with a session.  This is most useful
     when a storage method other than those supplied by PHP sessions
     is preferred.  i.e. Storing the session data in a local database.
     Returns TRUE on success or FALSE on failure.
    
Note: 
      The "write" handler is not executed until after the output
      stream is closed.  Thus, output from debugging statements in the
      "write" handler will never be seen in the browser.  If debugging
      output is necessary, it is suggested that the debug output be
      written to a file instead.
     
     The following example provides file based session
     storage similar to the PHP sessions default save handler
     files.  This example could easily be
     extended to cover database storage using your favorite PHP
     supported database engine.
    
     Read function must return string value always to make save
     handler work as expected. Return empty string if there is no data
     to read. Return values from other handlers are converted to
     boolean expression. TRUE for success, FALSE for failure.
    
| Warning | 
| 
      Write and Close handlers are called after destructing objects since PHP
      5.0.5. Thus destructors can use sessions but session handler can't use
      objects. In prior versions, they were called in the opposite order. It
      is possible to call session_write_close() from the
      destructor to solve this chicken and egg problem.
      | 
     
| Example 1. 
       session_set_save_handler() example
       | 
<?phpfunction open($save_path, $session_name)
 {
 global $sess_save_path, $sess_session_name;
 
 $sess_save_path = $save_path;
 $sess_session_name = $session_name;
 return(true);
 }
 
 function close()
 {
 return(true);
 }
 
 function read($id)
 {
 global $sess_save_path, $sess_session_name;
 
 $sess_file = "$sess_save_path/sess_$id";
 if ($fp = @fopen($sess_file, "r")) {
 $sess_data = fread($fp, filesize($sess_file));
 return($sess_data);
 } else {
 return(""); // Must return "" here.
 }
 
 }
 
 function write($id, $sess_data)
 {
 global $sess_save_path, $sess_session_name;
 
 $sess_file = "$sess_save_path/sess_$id";
 if ($fp = @fopen($sess_file, "w")) {
 return(fwrite($fp, $sess_data));
 } else {
 return(false);
 }
 
 }
 
 function destroy($id)
 {
 global $sess_save_path, $sess_session_name;
 
 $sess_file = "$sess_save_path/sess_$id";
 return(@unlink($sess_file));
 }
 
 /*********************************************
 * WARNING - You will need to implement some *
 * sort of garbage collection routine here.  *
 *********************************************/
 function gc($maxlifetime)
 {
 return true;
 }
 
 session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
 
 session_start();
 
 // proceed to use sessions normally
 
 ?>
 | 
 | 
    
     See also the session.save_handler
     configuration directive.