<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 概述 可以直接使用`think\facade\Session`類操作`Session`。 >[danger] 新版本不支持操作原生`$_SESSION`數組和所有`session_`開頭的函數,只能通過`Session`類(或者助手函數)來操作。會話數據統一在當前請求結束的時候統一寫入 所以不要在`session`寫入操作之后執行`exit`等中斷操作,否則會導致`Session`數據寫入失敗。 `6.0`的`Session`類可以很好的支持諸如`Swoole`/`Workerman`等環境。 ## 開啟Session `Session`功能默認是沒有開啟的(API應用通常不需要使用`Session`),如果你需要使用`Seesion`,需要在全局的中間件定義文件中加上下面的中間件定義: ``` 'think\middleware\SessionInit' ``` > 如果是多應用模式,并且你只是用于部分應用,那么也可以在應用中間件定義文件中單獨開啟。 ## Session初始化 系統會自動按照`session.php`配置的參數自動初始化`Session`。 默認支持的`session`設置參數包括: |參數|描述| |---|---| |type|session類型(`File`或者`Cache`)| |store|當type設置為cache類型的時候指定存儲標識| |expire|session過期時間(秒)必須大于0| |var_session_id|請求session_id變量名| |name|session_name| |prefix|session前綴| |serialize|序列化方法| 無需任何操作就可以直接調用`Session`類的相關方法,例如: ~~~ Session::set('name', 'thinkphp'); Session::get('name'); ~~~ 會話數據保存(請求結束)的時候會自動序列化,并在讀取的時候自動反序列化,默認使用`serialize`/`unserialize`進行序列化操作,你可以自定義序列化機制。 例如在配置文件中設置為使用`JSON`序列化: ``` 'serialize' => ['json_encode', 'json_decode'], ``` >[danger] 盡量避免把對象保存到`Session`會話 ## 基礎用法 ### 賦值 ~~~ Session::set('name', 'thinkphp'); ~~~ ### 判斷是否存在 ~~~ Session::has('name'); ~~~ ### 取值 ~~~ // 如果值不存在,返回null Session::get('name'); // 如果值不存在,返回空字符串 Session::get('name', ''); // 獲取全部數據 Session::all(); ~~~ ### 刪除 ~~~ Session::delete('name'); ~~~ ### 取值并刪除 ~~~ // 取值并刪除 Session::pull('name'); ~~~ 如果name的值不存在,返回`Null`。 ### 清空 ~~~ Session::clear(); ~~~ ### 閃存數據,下次請求之前有效 ~~~ // 設置session 并且在下一次請求之前有效 Session::flash('name','value'); ~~~ ### 提前清除當前請求有效的數據 ~~~ // 清除當前請求有效的session Session::flush(); ~~~ >[danger] 注意,`Session`寫入數據的操作會在請求結束的時候統一進行本地化存儲,所以不要在寫入`Session`數據之后使用exit等中斷操作,可能會導致`Session`沒有正常寫入。 ## 多級數組 支持`session`的多級數組操作,例如: ~~~ // 賦值 Session::set('name.item','thinkphp'); // 判斷是否賦值 Session::has('name.item'); // 取值 Session::get('name.item'); // 刪除 Session::delete('name.item'); ~~~ 其中`set`和`delete`方法只能支持二級數組,其他方法支持任意級數組操作。 ## 助手函數 系統也提供了助手函數`session`完成相同的功能,例如: ~~~ // 賦值 session('name', 'thinkphp'); // 判斷是否賦值 session('?name'); // 取值 session('name'); // 刪除 session('name', null); // 清除session session(null); ~~~ ## Request對象中讀取Session 可以在Request對象中讀取Session數據 ``` public function index(Request $request) { // 讀取某個session數據 $request->session('user.name', ''); // 獲取全部session數據 $request->session(); } ``` 但`Request`類中不支持`Session`寫入操作。 ## 應用獨立會話 >[danger] 多應用情況下默認`Session`是跨應用的,也就是說多應用之間是共享會話數據的,如果不希望共享會話數據,可以給每個應用設置不同的前綴`prefix`。 如果是File類型的話,默認的`session`會話數據保存在`runtime/session`目錄下面,你可以設置`path`改變存儲路徑。 ## Session驅動 默認的`Session`驅動采用文件緩存方式記錄,并且支持如下配置 |參數|描述| |---|---| |path|session保存路徑| |data_compress|是否壓縮數據| |gc_divisor|GC回收概率| |gc_probability|GC回收概率| 除了文件類型之外,還可以支持直接使用緩存作為`Session`類型,例如: ~~~ return [ 'type' => 'cache', 'store' => 'redis', 'prefix' => 'think', ] ~~~ 表示使用`redis`作為`session`類型。 要以上的配置生效,請確保緩存配置文件`cache.php`中的`stores`中已經添加了`redis`緩存配置,例如: ~~~ return [ 'default' => 'file', 'stores' => [ // 文件緩存 'file' => [ // 驅動方式 'type' => 'file', // 設置不同的緩存保存目錄 'path' => '../runtime/file/', ], // redis緩存 'redis' => [ // 驅動方式 'type' => 'redis', // 服務器地址 'host' => '127.0.0.1', ], ], ]; ~~~ ## 自定義驅動 如果需要自定義`Session`驅動,你的驅動類必須實現`think\contract\SessionHandlerInterface`接口,包含了三個方法。 ``` interface SessionHandlerInterface { public function read(string $sessionId): string; public function delete(string $sessionId): bool; public function write(string $sessionId, string $data): bool; } ``` `read`方法是在調用`Session::start()`的時候執行,并且只會執行一次。 `write`方法是在本地化會話數據的時候執行(調用`Session::save()`方法),系統會在每次請求結束的時候自動執行。 `delete`方法是在銷毀會話的時候執行(調用`Session::destroy()`方法)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看