每註冊一個新會員,自動分配一個客服
客服一共有3個(以後會增加更多客服) 怎樣處理?
第一個新會員, 客服1
第二個新會員,客服2
第三個新會員,客服3
第四個新會員,客服1
...
我是先查詢出客服表中所有客服,然後更新新註冊會員表中客服欄位。
現在是怎樣讓之間一一對應?
回複內容:
每註冊一個新會員,自動分配一個客服
客服一共有3個(以後會增加更多客服) 怎樣處理?
第一個新會員, 客服1
第二個新會員,客服2
第三個新會員,客服3
第四個新會員,客服1
...
我是先查詢出客服表中所有客服,然後更新新註冊會員表中客服欄位。
現在是怎樣讓之間一一對應?
請問要不要考慮 客服閑置狀態
比如客服 a b c
這個時候來了3個人 分給了a b c
此時c 已經幫處理完自己的事情了
這時 又來了第四個人 分給誰
若不存在此情況
$number = file_get_contents("log.txt");file_put_contents("log.txt", ($number +1)%3);
配合redis來做吧。
使用List結構,先構建客服list,新使用者進來的時候RPOP一個隊尾客服使用,然後在把這個客服LPUSH到隊頭去
當新增客服的時候,你如果想序號順序不變比如目前是 2 3 1,新加入的4後List要變成 2 3 4 1這時候就要去除隊列進行邏輯判斷下。如果不需要就直接LPUSH 到隊頭。
不用redis的話就寫檔案,每個客服用 "\r\n" 隔開取的規則跟上面一樣
謝邀,簡單寫了個函數,是想要這樣嗎?
輸出結果
1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,4,1,
setNum($num); } function getService(){ if($this->count >= $this->num){ $this->count = 0; } $this->count ++; return $this->count; } function setNum($num){ $this->num = $num; }}$factory = new serviceFactory(3);echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";$factory->setNum(4);echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";echo $factory->getService(),",";
超級簡單的hash演算法來一個, 客服個數 n 新註冊使用者id m 然後分配的客服為 m % n + 1 即可
之前寫過一個類似的,不過不是客服,這裡就不貼代碼了,講講個人的做法了:
最終目的是讓每個客服都忙起來,又不能讓使用者久等。
所以,新來一個使用者,就給他分配一個:
if ( 空閑狀態的客服數 >= 0 ){ // 分配給最先進入空閑狀態的那個客服}else{ // 說明現在每個客服都有使用者在諮詢 // 並且可能某些客服下還有在排隊等待的使用者 擷取每個客服 **當前諮詢任務** 的開始時間 將這個使用者指派給 當前資訊任務 的開始時間最早的 並且 後面排隊人數最少的哪個客服 // 其實上面還有一個權重的問題,比如 A 客服 當前客戶資訊任務開始時間比 B 早 2分鐘,但是 A 後面排隊的人數比 B 客服多 1個,這就要靠 權重值 來計算是分配給 A 還是 B。}
個人覺得哈,可以先分配虛擬客服 X ,其實就是一個機器問答系統,然後某個客服結束後,立即將隊列中的使用者指派過去,這樣不存在插隊或者其他麻煩的事情。同時輕鬆做到每個客服都能忙起來。
我也是剛接觸這方面的知識,答得不好還請大家多指正,謝謝