關於 Swoft 2.0 版本用 Redis 儲存 session 時配置問題

Limpid發表於2020-06-16

網上查了許多也沒看到需要解釋,所以這裡稍微分享下
首先Swoft 2.0在session配置上和1.0還是有一些不同地方,而關於這些在github上完全沒有任何說明,甚至連文件也沒有。經過逐步梳理原始碼(其中要理解他的“註解”)對比預設的1.0和其他儲存方式檔案配置,稍微測通了。

首先session用redis儲存時,要先根據2.0的文件把redis配置好,這裡無須贅述,需要說的一點就是:它的redis連線池預設是‘redis.pool’。

現在附上session配置在bean.php里加上

'sessionManager' => [
        'class' => Swoft\Http\Session\SessionManager::class,
        'name' => 'MYSWOFT_SESSION_ID',
        'handler' => bean('sessionHandler'),
        'lifetime' => 1800,
        'expire_on_close' => false,
        'encrypt' => false,
        //'storage' => '@runtime/sessions',
    ],
    'sessionHandler' => [
        'class'    => Swoft\Http\Session\Handler\RedisHandler::class,
        'redis' => bean('redis.pool')
        // For storage session files
        //'savePath' => alias('@runtime/sessions')
    ],

這裡需要注意的幾點:
1.遵循這個結構配置,1.0的配置結構不再適用,原因在於擴充模組檔案的引數都變了;
2.’sessionManager’下’class’的路徑,2.0和1.0的路徑有差異;
3.’sessionHandler’下’redis’這個引數,這個位置卡了半天,出現redis適用方法找不到情況,最後發現RedisHandler中的屬性沒有預設值,需要賦值。這個賦值也關聯到前面的redis的連線池,如果你的連線池改了其他名稱,這裡也需要跟著改;
4.和第三點差不多,如果用到了其他的儲存方式要注意檢視模組檔案是否有需要在配置檔案賦值的屬性(比如檔案儲存時設定savePath),這裡需要多瞭解他裡面的“註解”;

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章