国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman多語(yǔ)言組件嚴(yán)重BUG

aphper

translation 是共享的單例 只要一個(gè)用戶使用 locale() 函數(shù) 切換了語(yǔ)言,將導(dǎo)致整個(gè)網(wǎng)站的用戶都切換了語(yǔ)言

想要切換語(yǔ)言 只能每次輸出的時(shí)候 trans('hello', [], null, 'en'); 指定語(yǔ)言

而在FPM模式下,每次請(qǐng)求設(shè)定locale,設(shè)定locale后每次trans都使用locale設(shè)定的語(yǔ)言 下次請(qǐng)求需要讀取用戶設(shè)置的語(yǔ)言再次locale。locale本質(zhì)上對(duì)單次請(qǐng)求有效,通過(guò)把用戶個(gè)性化設(shè)置的語(yǔ)言儲(chǔ)存在數(shù)據(jù)庫(kù)或者cookie,可以達(dá)到locale對(duì)單個(gè)用戶有效的效果,比如網(wǎng)站默認(rèn)提供英文,用戶可以自定義英文 日文,而且這個(gè)設(shè)定只對(duì)這個(gè)用戶自己有效

而webman中由于共享了一個(gè)單例 通過(guò)locale設(shè)定語(yǔ)言后 對(duì)整個(gè)網(wǎng)站都生效,一個(gè)用戶設(shè)置了英文 整個(gè)網(wǎng)站的所有用戶都會(huì)看到英文,想要達(dá)到fpm模式的切換語(yǔ)言業(yè)務(wù)效果 只能在每次調(diào)用trans函數(shù)時(shí)再設(shè)定一次語(yǔ)言

這顯然屬于是一個(gè)BUG而不是webman獨(dú)有的特性

2717 3 0
3個(gè)回答

ersic

用戶語(yǔ)言放到 session 里呢,簡(jiǎn)單封裝一下

  • aphper 2022-05-10

    思路差不多 不過(guò)你這個(gè)方案有點(diǎn)問(wèn)題

  • aphper 2022-05-10

    新用戶第一次進(jìn)來(lái)還沒(méi)設(shè)定語(yǔ)言時(shí),展示的語(yǔ)言是最后一個(gè)訪問(wèn)的用戶設(shè)定的語(yǔ)言

  • aphper 2022-05-10

    還是得整個(gè)全局中間件,每次請(qǐng)求開(kāi)始都重置成config中的默認(rèn)語(yǔ)言,這個(gè)最好是群主能在框架中處理好

  • ersic 2022-05-10

    沒(méi)設(shè)定語(yǔ)言session沒(méi)值,讀的是配置里的默認(rèn)語(yǔ)言。

  • aphper 2022-05-10

    那你不是每隔頁(yè)面都要locale一下

  • 魯達(dá) 2022-05-10

    只能每次請(qǐng)求都要設(shè)置下語(yǔ)言,因?yàn)閱卫脑捠轻槍?duì)每個(gè)worker進(jìn)程的

  • 魯達(dá) 2022-05-10

    walkor大神也沒(méi)必要處理,文檔說(shuō)明清楚就好了

  • ersic 2022-05-10

    沒(méi)辦法,這個(gè)類提前注入的,只能這樣處理,比每次都new也快著呢。

  • aphper 2022-05-10

    是的想了組件確實(shí)沒(méi)必要改 不過(guò)框架中每次請(qǐng)求重置語(yǔ)言為默認(rèn)還是有必要的

liziyu

用session + 中間件來(lái)做可以的!

  • aphper 2022-05-10

    是的 可以自己處理

  • aphper 2022-05-10

    最好是框架處理下 不處理也可以在文檔中注明一下 ,畢竟和大部分框架包括其他常駐內(nèi)存框架使用的方法有差別 容易被慣性思維誤導(dǎo)

walkor 打賞

這個(gè)編程時(shí)注意下就行了。webman里單例是長(zhǎng)生命周期,所有請(qǐng)求共享。
用中間件處理是推薦做法,這個(gè)樣可以為每個(gè)請(qǐng)求設(shè)置明確的語(yǔ)言。

手冊(cè)加了說(shuō)明
https://workerman.net/doc/webman/components/translation.html#%E4%B8%BA%E6%AF%8F%E4%B8%AA%E8%AF%B7%E6%B1%82%E6%98%8E%E7%A1%AE%E7%9A%84%E8%AE%BE%E7%BD%AE%E8%AF%AD%E8%A8%80

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??