Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php
Строк: 102
<?php

namespace IlluminateSession;

use 
IlluminateFilesystemFilesystem;
use 
IlluminateSupportCarbon;
use 
SessionHandlerInterface;
use 
SymfonyComponentFinderFinder;

class 
FileSessionHandler implements SessionHandlerInterface
{
    
/**
     * The filesystem instance.
     *
     * @var IlluminateFilesystemFilesystem
     */
    
protected $files;

    
/**
     * The path where sessions should be stored.
     *
     * @var string
     */
    
protected $path;

    
/**
     * The number of minutes the session should be valid.
     *
     * @var int
     */
    
protected $minutes;

    
/**
     * Create a new file driven handler instance.
     *
     * @param  IlluminateFilesystemFilesystem  $files
     * @param  string  $path
     * @param  int  $minutes
     * @return void
     */
    
public function __construct(Filesystem $files$path$minutes)
    {
        
$this->path $path;
        
$this->files $files;
        
$this->minutes $minutes;
    }

    
/**
     * {@inheritdoc}
     *
     * @return bool
     */
    
public function open($savePath$sessionName): bool
    
{
        return 
true;
    }

    
/**
     * {@inheritdoc}
     *
     * @return bool
     */
    
public function close(): bool
    
{
        return 
true;
    }

    
/**
     * {@inheritdoc}
     *
     * @return string|false
     */
    
public function read($sessionId): string|false
    
{
        if (
$this->files->isFile($path $this->path.'/'.$sessionId) &&
            
$this->files->lastModified($path) >= Carbon::now()->subMinutes($this->minutes)->getTimestamp()) {
            return 
$this->files->sharedGet($path);
        }

        return 
'';
    }

    
/**
     * {@inheritdoc}
     *
     * @return bool
     */
    
public function write($sessionId$data): bool
    
{
        
$this->files->put($this->path.'/'.$sessionId$datatrue);

        return 
true;
    }

    
/**
     * {@inheritdoc}
     *
     * @return bool
     */
    
public function destroy($sessionId): bool
    
{
        
$this->files->delete($this->path.'/'.$sessionId);

        return 
true;
    }

    
/**
     * {@inheritdoc}
     *
     * @return int
     */
    
public function gc($lifetime): int
    
{
        
$files Finder::create()
                    ->
in($this->path)
                    ->
files()
                    ->
ignoreDotFiles(true)
                    ->
date('<= now - '.$lifetime.' seconds');

        
$deletedSessions 0;

        foreach (
$files as $file) {
            
$this->files->delete($file->getRealPath());
            
$deletedSessions++;
        }

        return 
$deletedSessions;
    }
}
Онлайн: 2
Реклама