pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

Laravel lockforupdate(悲觀鎖)

Laravel lockforupdate (Pessimistic Locking)(Laravel lockforupdate(悲觀鎖))
本文介紹了Laravel lockforupdate(悲觀鎖)的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在嘗試弄清楚如何正確使用/測試 lockforupdate,但我發現它的功能與我預期的不一樣

這只是測試

公共函數索引(){返回 dd(DB::transaction(function() {如果 (Auth::guard('user')->check()) {$model = AppModelsUser::find(1)->lockForUpdate();睡眠(60);$model->point = 100000;$model->save();} 別的 {$model = AppModelsUser::find(1);$model->point = 999;$model->save();}返回 $model;}));}

我嘗試在 2 個瀏覽器中進行測試,瀏覽器 1 用戶登錄而瀏覽器 2 未登錄,瀏覽器 1 刷新,然后會在更新前鎖定更新并休眠 60 秒

在 60 秒內,我轉到瀏覽器 2 并刷新,但是記錄沒有鎖定,我檢查 phpmyadmin 并更新記錄(在瀏覽器 1 觸發的 60 秒鎖定內)

但是60秒后,記錄又被瀏覽器1修改了(Point 100000)

我是不是誤解了 lockforupdate 的用途?還是我測試錯誤?

我期望的是瀏覽器 2 在前 60 秒內不應修改該行(帶有加載圖標或錯誤拋出的空白頁面?)

https://laravel.com/docs/5.2/queries#pessimistic-locking

我做了一些研究,但仍然無法理解 sharedLock(LOCK IN SHARE MODE) 和 lockForUpdate(FOR UPDATE) 之間的區別

順便說一句,我確認數據庫是 innodb

解決方案

這個工作,終于,但還是沒明白sharedLock(LOCK IN SHARE MODE)和lockForUpdate(FOR UPDATE)有什么不同

 公共函數 index() {返回 dd(DB::transaction(function() {如果 (Auth::guard('user')->check()) {$model = AppModelsUser::lockForUpdate()->find(1);睡眠(30);$model->point = 100000;$model->save();} 別的 {$model = AppModelsUser::lockForUpdate()->find(1);$model->point = $model->point + 1;$model->save();}返回 $model;}));}

i'm trying to figure out how to use/test the lockforupdate correctly, but i found is not function like what i expected

this is just testing

public function index() {
        return dd(DB::transaction(function() {
            if (Auth::guard('user')->check()) {
                $model = AppModelsUser::find(1)->lockForUpdate();
                sleep(60);
                $model->point = 100000;
                $model->save();
            } else {
                $model = AppModelsUser::find(1);
                $model->point = 999;
                $model->save();
            }

            return $model;
        }));
}

i try to test in 2 browser, browser 1 user logged in and browser 2 not logged in, browser 1 hit refresh, then there will lockforupdate and sleep 60 seconds before update

in the 60 seconds, i go browser 2 and hit refresh, however the record is not locked, i check phpmyadmin and the record is updated(within the 60 seconds lock trigger by browser 1)

but after 60 seconds, the record has been modified again by browser 1(Point 100000)

so am i misunderstanding the lockforupdate is use for?or i test it incorrectly?

what i expected is the row shouldn't be modified by browser 2 in the first 60 seconds(blank page with loading favicon or error throw?)

https://laravel.com/docs/5.2/queries#pessimistic-locking

and i did some research but still cannot understand what different between sharedLock(LOCK IN SHARE MODE) and lockForUpdate(FOR UPDATE)

btw i confirmed the database is innodb

解決方案

This work, finally, but still don't understand what sharedLock(LOCK IN SHARE MODE) and lockForUpdate(FOR UPDATE) different

    public function index() {
        return dd(DB::transaction(function() {
            if (Auth::guard('user')->check()) {
                $model = AppModelsUser::lockForUpdate()->find(1);
                sleep(30);
                $model->point = 100000;
                $model->save();
            } else {
                $model = AppModelsUser::lockForUpdate()->find(1);
                $model->point = $model->point + 1;
                $model->save();
            }

            return $model;
        }));
    }

這篇關于Laravel lockforupdate(悲觀鎖)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Magento products by categories(按類別劃分的 Magento 產品)
Resource interpreted as image but transferred with MIME type text/html - Magento(資源被解釋為圖像但使用 MIME 類型 text/html 傳輸 - Magento)
Is there an event for customer account registration in Magento?(Magento 中是否有客戶帳戶注冊事件?)
Magento addFieldToFilter: Two fields, match as OR, not AND(Magento addFieldToFilter:兩個字段,匹配為 OR,而不是 AND)
quot;Error 404 Not Foundquot; in Magento Admin Login Page(“未找到錯誤 404在 Magento 管理員登錄頁面)
Get Order Increment Id in Magento(在 Magento 中獲取訂單增量 ID)
主站蜘蛛池模板: 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 5L旋转蒸发器-20L-50L旋转蒸发器-上海越众仪器设备有限公司 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 2025福建平潭岛旅游攻略|蓝眼泪,景点,住宿攻略-趣平潭网 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | RO反渗透设备_厂家_价格_河南郑州江宇环保科技有限公司 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 并离网逆变器_高频UPS电源定制_户用储能光伏逆变器厂家-深圳市索克新能源 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 聚合氯化铝厂家-聚合氯化铝铁价格-河南洁康环保科技 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 防潮防水通风密闭门源头实力厂家 - 北京酷思帝克门窗 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 振动台-振动试验台-振动冲击台-广东剑乔试验设备有限公司 | 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 创富网-B2B网站|供求信息网|b2b平台|专业电子商务网站 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 苏州柯瑞德货架-仓库自动化改造解决方案 | 西安中国国际旅行社(西安国旅) |