class FileSessionHandler implements SessionHandlerInterface
{
private $savePath;
/**
* Call session_start call
*
* @param string $savePath
* @param string $sessionName
* @return bool
*/
function open($savePath, $sessionName)
{
echo "open.\n";
$this->savePath = $savePath;
if (!is_dir($this->savePath)) {
mkdir($this->savePath, 0777);
}
return true;
}
/**
* session executes the call
*
* @return bool
*/
function close()
{
echo "close.\n";
return true;
}
/**
* Get session data calls
*
* @param string $id
* @return string
*/
function read($id)
{
echo "read.\n";
return (string)@file_get_contents("$this->savePath/sess_$id");
}
/**
* session assignment call
*
* @param string $id
* @param string $data
* @return bool
*/
function write($id, $data)
{
echo "write.\n";
return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
}
/**
* Call session_destory
*
* @param string $id
* @return bool
*/
function destroy($id)
{
echo "destroy.\n";
$file = "$this->savePath/sess_$id";
if (file_exists($file)) {
unlink($file);
}
return true;
}
/**
* Expired calls
*
* @param int $maxlifetime
* @return bool
*/
function gc($maxlifetime)
{
echo "gc.\n";
foreach (glob("$this->savePath/sess_*") as $file) {
if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
unlink($file);
}
}
return true;
}
}
Рубрики