課程
/后端開發
/PHP
/PHP消息隊列實現及應用
請問哪里有用到鎖 ? 看了代碼 ?沒找到
2018-03-31
源自:PHP消息隊列實現及應用 2-2
正在回答
status 0 未處理 1 已處理 2 處理中
應該是查詢status=0的數據,然后將數據狀態改為2,如果執行成功就改為1,反之改為0,這樣每次查詢status=0的數據就不會有重復的。
視頻中說的鎖沒有任何意義。
這里的鎖應該是配合其他地方使用的, 其他地方查詢的時候不對 status 為 2 (處理中的)的進行修改處理
正確做法應該是先 查找 2條數據出來, 然后更新為 2 (處理中),? 下一步對這倆條數據進行處理
這個鎖完全是自己yy的一個鎖, 完全沒有起到作用;
?試想一下:
?第一次執行
?????修改2條記錄為? 狀態更新為2 。?
????然后搜索狀態為 2 的數據? (2條);
????處理數據 (此時處理流程在復雜狀態下1分鐘內只處理了1條);
1分鐘后, 第二次執行? ? ?
????修改2條記錄為??狀態更新為2 。?
????然后搜索狀態為 2 的數據? (3條,2條是本次更新的記錄,還有1條是上次沒有處理完成的);
????處理數據 (此時是不是有一條數據重復處理了???);
訂單狀態先設置為“處理中”(鎖定),然后進行處理,處理完成后再設置為“已處理”(解除鎖定)。
舉報
消息隊列是個什么玩意兒,使用隊列解決秒殺等實際問題概念和使用方法
2 回答處理訂單的時候,如果1分鐘沒處理完當前的兩個訂單
1 回答訂單時異步處理的,前端怎么樣立即得到秒殺結果呢
4 回答為什么需要定時去執行??這樣做的好處是什么?訂單不是可以在點擊按鈕觸發修改狀態就可以實現?
2 回答像go語言或者swoole這種,他們有異步處理能力,是不是可以不用隊列?
3 回答redis LPOP 取出list里面的數據,再用LLEN 來取值,數據長度就變了,意味著又可以參加秒殺了么
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2021-12-12
status 0 未處理 1 已處理 2 處理中
應該是查詢status=0的數據,然后將數據狀態改為2,如果執行成功就改為1,反之改為0,這樣每次查詢status=0的數據就不會有重復的。
視頻中說的鎖沒有任何意義。
2018-07-29
這里的鎖應該是配合其他地方使用的, 其他地方查詢的時候不對 status 為 2 (處理中的)的進行修改處理
2018-07-29
正確做法應該是先 查找 2條數據出來, 然后更新為 2 (處理中),? 下一步對這倆條數據進行處理
2018-07-29
這個鎖完全是自己yy的一個鎖, 完全沒有起到作用;
?試想一下:
?第一次執行
?????修改2條記錄為? 狀態更新為2 。?
????然后搜索狀態為 2 的數據? (2條);
????處理數據 (此時處理流程在復雜狀態下1分鐘內只處理了1條);
1分鐘后, 第二次執行? ? ?
????修改2條記錄為??狀態更新為2 。?
????然后搜索狀態為 2 的數據? (3條,2條是本次更新的記錄,還有1條是上次沒有處理完成的);
????處理數據 (此時是不是有一條數據重復處理了???);
2018-04-08
訂單狀態先設置為“處理中”(鎖定),然后進行處理,處理完成后再設置為“已處理”(解除鎖定)。