驗證碼流程,如何實現高併發

2021-09-29 17:30:09 字數 651 閱讀 4348

寫過「使用者註冊傳送驗證碼」這一邏輯的程式的同學應該都知道,後端程式需要區分正常的同乙個人的兩次請求和惡意的兩次請求,同時又不能造成最大連線上的併發損失。

目前我的實現方案是,利用 concurrentskiplistset,對正在訪問該介面的使用者做乙個鑑定,如果請求來了,但是當前使用者已經正在呼叫這個介面,那麼這次請求就返回太快了。

private

synchronized boolean checkuserinoption

(long userid)

return users.

add(userid)

;}

在極端高併發的情況下,為了避免兩個相同userid的請求來呼叫該方法(呼叫成功意味發簡訊或郵件驗證碼,系統設計中需要避免同時傳送兩個簡訊的,因為你不知道最後系統存的是哪個驗證碼生效,同時這也會成為別人非法呼叫介面成為簡訊轟炸機的漏洞),我對該方法加了一把同步鎖,能抵擋住上面的問題。

雖然抵擋住了上面的問題,但是也引發了新的併發限制,即:兩個不同的userid的請求,也因為這個同步限制,導致不能併發呼叫,但是從場景上來說,我要求的是對相同userid的呼叫進行排隊呼叫,而實現卻擴大了這樣的效果,從而造成併發上的連線洩漏。

如何避免這種連線數的洩漏,達到高併發的效果?各位朋友,有比較好的解決方案嗎?

PHP如何實現驗證碼

現在來說說簡單的純數字驗證碼吧。如果是初學者,建議按照我 的注釋 數字 一步步來。最簡單的方法,還是把整個 複製走了。新建乙個captcha.php 11 設定session,必須處於指令碼最頂部 session start image imagecreatetruecolor 100,30 1 設...

驗證碼實現

1.gd庫 2.建立影象步驟 1 建立畫布 就是在記憶體中開闢一塊臨時區域,用於儲存圖影象資訊 2 繪製影象 使用各種函式設定影象顏色,背景,填充畫筆,繪製圖形等 3 輸出圖形 以某種格式儲存到伺服器或者輸出到瀏覽器顯示給使用者。注意 直接輸出之前一定要用header 告訴瀏覽器以影象格式來處理該輸...

php驗證碼zhuc php實現驗證碼製作

php實現驗證碼製作 首先,看一張圖了解驗證碼生成的過程。1 生成驗證碼底圖 2 驗證碼內容 3 生成驗證碼 4 對比校驗 驗證碼實現的核心技術分析 a 底圖的 實現,並新增干擾元素 b 生成驗證內容 c 驗證內容儲存在服務端 d 驗證內容的校驗 下面看 實現的過程 這段 實現了產生 隨機數字,隨機...