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ò)
分享:
五华县| 镇巴县| 体育| 婺源县| 前郭尔| 巴塘县| 黑河市| 榆树市| 西乌| 米林县| 宣武区| 景德镇市| 垦利县| 瓦房店市| 广丰县| 肇州县| 镶黄旗| 铜川市| 渝北区| 遵化市| 潞西市| 定远县| 定日县| 鄂托克旗| 乐都县| 龙口市| 金寨县| 茌平县| 松溪县| 云龙县| 拜城县| 沈阳市| 崇文区| 汕头市| 平顶山市| 巫溪县| 原阳县| 崇仁县| 汤阴县| 佛坪县| 贵州省|