2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

thinkphp6中使用session設(shè)置無效問題的解決及注意事項

2022-05-27 18:27 欄目:技術(shù)開發(fā) 查看(12552)

就如thinkphp官方在文檔開頭所描述的一樣,ThinkPHP6.0基于精簡核心和統(tǒng)一用法兩大原則在5.1的基礎(chǔ)上對底層架構(gòu)做了進一步的優(yōu)化改進,并更加規(guī)范化;其實從5.x版本開始thinkphp本身就是為api應(yīng)用而生。特別是在6.0版本開始框架默認壓根不開啟和提供模板引擎,需要下載安裝模板引擎類庫后方可開啟。

新版本不支持操作原生$_SESSION數(shù)組和所有session_開頭的函數(shù),只能通過Session類(或者助手函數(shù))來操作。因此,Session功能默認是沒有開啟的(API應(yīng)用通常不需要使用Session)。甚至我們可以這樣理解:在6.0版本中框架本身不提供session機制,而是通過think\facade\Session類來模擬實現(xiàn)session。

QQ截圖20220527180525

根據(jù)官方文檔,默認session是不開啟的,需要在全局的中間件中中開啟;讓人如果是多應(yīng)用項目,僅僅想讓session應(yīng)用到某個應(yīng)用,可以在對應(yīng)的應(yīng)用的中間件中開啟。其中全局中間件配置文件位于app/middleware.php

QQ截圖20220527180754

實際上僅僅在中間件中進行session初始化是不行的,如寫入測試代碼:

session('key',1);
var_dump(session('key'));

這個時候頁面會int(1),但刷新頁面后重新使用session(‘key’)獲取數(shù)據(jù)會發(fā)現(xiàn)NULL,也就是獲取不到數(shù)據(jù)值。原因在于在上述處理后session的緩存數(shù)據(jù)并沒有保存起來(類似你填寫一個表單,沒點提交,自然刷新后就沒有了)。需要在執(zhí)行設(shè)置session后,執(zhí)行如下代碼進行保存:

實際上僅僅在中間件中進行session初始化是不行的,如寫入測試代碼:

session('key',1);
\think\facade\Session::save();

這樣操作后,我們會發(fā)現(xiàn)在框架的runtime目錄中,會出現(xiàn)一個對應(yīng)的session緩存文件。

QQ截圖20220527181612

里面就包含了當(dāng)前會話保存的兩個session值,一個是上面演示的key,一個是另外寫入的vcode。

QQ截圖20220527181740

現(xiàn)在在系統(tǒng)任何位置,執(zhí)行session(‘key’)都能得到預(yù)期的數(shù)據(jù)。

相對于5.x版本,6.x版本的代碼更加精簡,剝離了很多功能模塊,如果要使用這些功能模塊,需要加載額外的類庫或者自己接管相應(yīng)的流程進行處理。所以,筆者不建議把已經(jīng)穩(wěn)定運行的項目升級為了thinkphp6.0版本,官方?jīng)]有提供自動化升級方案,因為差別的東西還是比較多,僅僅提供了升級指導(dǎo),很多流程需要手動去進行升級。我們微構(gòu)網(wǎng)絡(luò)到今年開始才在新項目使用6.0版本,以前的項目使用的的是5.x版本。也嘗試過把老某個相對簡單的老項目升級為6.0版本,雖然升級過程還算順利,但需要填的坑比較多,后續(xù)如果有時間筆者會整理該項目升級到6.0版本過程中遇到的一些典型問題及其解決方法。

與我們的項目經(jīng)理聯(lián)系
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請注明出處:thinkphp6中使用session設(shè)置無效問題的解決及注意事項 - 微構(gòu)網(wǎng)絡(luò)
分享:
翁源县| 那坡县| 班玛县| 汶上县| 元谋县| 南丹县| 营口市| 夏邑县| 西藏| 布拖县| 吉安市| 湾仔区| 南安市| 湛江市| 青海省| 钟祥市| 紫金县| 鄂尔多斯市| 唐山市| 顺平县| 怀宁县| 德化县| 杨浦区| 县级市| 南澳县| 永善县| 鹰潭市| 隆昌县| 汕尾市| 顺昌县| 绥中县| 会宁县| 班戈县| 新化县| 濮阳市| 鄂托克旗| 浦东新区| 玉田县| 喜德县| 双江| 兴国县|