ConFoo Montreal 2026: Call for Papers

Voting

: nine plus zero?
(Example: nine)

The Note You're Voting On

jeremie dot legrand at komori-chambon dot fr
9 years ago
Here is a wrapper to log in a file each session's operations. Useful to investigate sessions locks (which prevent PHP to serve simultaneous requests for a same client).
Just change the file name at the end to dump logs where you want.

class DumpSessionHandler extends SessionHandler {
private $fich;

public function __construct($fich) {
$this->fich = $fich;
}

public function close() {
$this->log('close');
return parent::close();
}

public function create_sid() {
$this->log('create_sid');
return parent::create_sid();
}

public function destroy($session_id) {
$this->log('destroy('.$session_id.')');
return parent::destroy($session_id);
}

public function gc($maxlifetime) {
$this->log('close('.$maxlifetime.')');
return parent::gc($maxlifetime);
}

public function open($save_path, $session_name) {
$this->log('open('.$save_path.', '.$session_name.')');
return parent::open($save_path, $session_name);
}

public function read($session_id) {
$this->log('read('.$session_id.')');
return parent::read($session_id);
}

public function write($session_id, $session_data) {
$this->log('write('.$session_id.', '.$session_data.')');
return parent::write($session_id, $session_data);
}

private function log($action) {
$base_uri = explode('?', $_SERVER['REQUEST_URI'], 2)[0];
$hdl = fopen($this->fich, 'a');
fwrite($hdl, date('Y-m-d h:i:s').' '.$base_uri.' : '.$action."\n");
fclose($hdl);
}
}
ini_set('session.save_handler', 'files');
$handler = new DumpSessionHandler('/path/to/dump_sessions.log');
session_set_save_handler($handler, true);

<< Back to user notes page

To Top