站內搜尋

Thursday, September 27, 2018

[Redis][Laravel] Laravel 如何將 Session 改寫在 Redis

Laravel 的 Session 機制是自己實作的,故與原生PHP的不同,在 Laravel 原始碼中甚至沒有 session_start(),所以也無法使用 $_SESSION,而 Laravel 的 Session 在使用上也很方便,更提供了好用的 helper session(),文件看一下就可以上手了。

Laravel Session 預設是檔案形式,放在 storage/framework/sessions/ 下,但這樣對於多台主機要共用 Session 比較不方便,所以可以改成放在 Redis 主機上,設定方式如下:

Step 1. 安裝 Redis 主機
首先你需要先有一台提供 Redis 服務的主機,架設方法可以參考 這篇,假設是 172.31.0.99:6379。

Step 2. 安裝 Laravel 的 Predis 套件
在 Web 主機上的 laravel 根目錄,用 composer 安裝 predis/predis
#composer require predis/predis

Step 3. 修改 config/database.php 中的 redis 設定值
在 redis 範圍內,增加一個名稱為 session 的連接點,內容可以複製 default,如果要區隔 redis 的 database,可以把 default 改成 'database' => 0, ,然後 session 改成 'database' => 2, ,目的是下指令清除 redis 快取時,session 不會一併被清掉。
'redis' => ]
  #略
  'session' => [
    'host' => env('REDIS_HOST', '127.0.0.1'),
    'password' => env('REDIS_PASSWORD', null),
    'port' => env('REDIS_PORT', 6379),
    'database' => 2,
  ],
],

Step 4. 修改 .env 設定值
修改如下
SESSION_DRIVER=redis
SESSION_CONNECTION=session  #設定 Session 要用 Step 3. 我們新增的 session 接點
REDIS_HOST=172.31.0.99
REDIS_PORT=6379

完成。

No comments:

Post a Comment