搜尋

首頁  >  問答  >  主體

php - 佇列非同步執行的時候是無法使用SESSION的,那麼登入還能使用佇列嗎?

佇列非同步執行的時候是無法使用SESSION的,那麼登入還能使用佇列嗎?如果能如何處理cookie和session的對應關係?

怪我咯怪我咯2752 天前358

全部回覆(1)我來回復

  • 怪我咯

    怪我咯2017-05-16 13:07:36

    錄還能使用隊列嗎?

    登入通常是個同步過程,用佇列不是不行,只是會增加複雜性。

    同步的登入過程就是讀取資料庫,判斷帳號密碼正確,設定session,能在一個HTTP請求裡搞完。

    換成異步,我只能想到下面這種方法:

    1. 客戶端產生隨機token

    2. 客戶端把token、帳號、密碼寄給伺服器

    3. 伺服器在redis中記錄這個token還沒登入成功

    4. 伺服器把把token、帳號、密碼放到佇列處理

    5. 隊列處理,如果帳號正確,redis中的token標記為成功,否則標記為失敗

    6. 客戶端在伺服器和佇列處理的過程中一直用另一個介面輪詢看token是否登入成功,成功的話以後的請求都帶上token,否則客戶端登入失敗。

    所以應該盡快完成同步的登入過程,把登入後需要的一些操作(發郵件通知等等)放隊列,而不是把整個登入過程放隊列。

    回覆
    0
  • 取消回覆