Php 更改Laravel 5.1中的会话文件名
因此,当有人访问网站时,Laravel会将自己的会话文件保存在/storage/framework/sessions文件夹中。这些会话文件的每个名称都是随机生成的字母数字唯一名称。但是,我想以某种方式重命名这些文件,并为其指定自己的自定义名称。我有两个选择Php 更改Laravel 5.1中的会话文件名,php,session,laravel-5.1,Php,Session,Laravel 5.1,因此,当有人访问网站时,Laravel会将自己的会话文件保存在/storage/framework/sessions文件夹中。这些会话文件的每个名称都是随机生成的字母数字唯一名称。但是,我想以某种方式重命名这些文件,并为其指定自己的自定义名称。我有两个选择 创建会话文件后手动更改文件名(通过创建、复制、替换) 找到随机生成字母数字名称的函数,并用我自己的方法更改它,为每个文件设置一个唯一的名称(这种方法可能不会太复杂) 我的主要最终目标是将每个用户的会话文件重命名为他们自己的userid,该
- 创建会话文件后手动更改文件名(通过创建、复制、替换)
- 找到随机生成字母数字名称的函数,并用我自己的方法更改它,为每个文件设置一个唯一的名称(这种方法可能不会太复杂)
<?php
namespace App\Providers;
use Session;
use Illuminate\Support\ServiceProvider;
use App\Handlers\MyFileHandler;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Session::extend('file', function($app)
{
return new MyFileHandler();
});
}
}
<?php
namespace App\Providers;
use Session;
use Illuminate\Support\ServiceProvider;
use Illuminate\Session\FileSessionHandler;
use App\Handlers\MyFileHandler;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Session::extend('file', function($app)
{
$path = $app['config']['session.files'];
return new MyFileHandler($app['files'], $path);
});
}
}
如果您的最终目标是搜索会话文件名;你不需要改变它们。
您可以将会话文件名保存在数据库表(或您选择的其他文件)中。您可以使用获取文件名
一栏->存储会话文件名
其他列->存储所需的其他信息
通过这种方式,您可以使用SQL搜索和查找更快的文件 对请求使用中间件
\Illuminate\Session\Middleware\StartSession::class
Route::group(['middleware' => [\Illuminate\Session\Middleware\StartSession::class]], function () {
});
谢谢你的回复。但是,文件的命名具体发生在哪里?它是启动功能中的“myfile”部分吗?如果是这样的话,通过在那里使用“myfile”,它不会是所有会话文件的静态名称,因为我怀疑boot不会被多次调用吗?我遗漏了什么吗?当然,这是另一种选择。但这需要创建新文件,并将会话信息存储在其中,甚至存储在数据库中。我的需求将需要我连续运行查询以从数据库中检索,几乎每5-10秒一次。文件可能更快,但我想如果我可以通过任何方式访问现有文件,为什么要创建新文件并执行相同的操作?
<?php
namespace App\Handlers;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Session\FileSessionHandler;
class MyFileHandler extends FileSessionHandler
{
public function __construct(Filesystem $files, $path)
{
parent::__construct($files, $path);
}
}
\Illuminate\Session\Middleware\StartSession::class
Route::group(['middleware' => [\Illuminate\Session\Middleware\StartSession::class]], function () {
});