PHP artisan cache:clear 避免把使用者登入資訊也清空

Bowens發表於2018-10-11

問題及解決思路

更新完專案,有時需要命令清除快取,結果使用者登入資訊也同時丟失,好尷尬~

php artisan cache:clear

laravel 專案中,session 驅動可以配置多種,但 redis 是絕大多數人的選擇。

SESSION_DRIVER=redis

redis 服務自身可提供多達 16 個資料庫,laravel 中預設使用資料庫0 來儲存快取和 session。

其中,laravel 清除快取命令,預設清除的就是redis 的 index 為 0 的資料庫,因此,我們經過簡單的配置,即可實現快取與 session 分別清除的效果。

解決方案

1. 進入 config/database.php,向 redis 選項內增加配置:

'redis' => [
    'client' => 'predis',
    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,//使用 redis 的 0 資料庫
    ],
    'session' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 1,//使用 redis 的 1 資料庫
    ],
    //還可以增加其他配置,例如 queue
],

2. 進入 config/session.php,找到 connection 鍵改為:

'connection' => 'session'

大功告成,去 php artisan cache:clear 試下吧 。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
唯有所執,方有所成。

相關文章