>백엔드 개발 >PHP 튜토리얼 >새로 등록한 회원에게 고객 서비스가 자동으로 할당되도록 하려면 어떻게 해야 합니까?

새로 등록한 회원에게 고객 서비스가 자동으로 할당되도록 하려면 어떻게 해야 합니까?

WBOY
WBOY원래의
2016-08-08 09:06:501062검색

새 회원이 등록될 때마다 고객 서비스 담당자가 자동으로 배정됩니다

총 3명의 고객 서비스 직원이 있습니다(향후 더 많은 고객 서비스가 추가될 예정입니다).
첫 번째 신입회원, 고객센터1
두 번째 신입회원, 고객센터2
세 ​​번째 신입회원, 고객센터3
네 번째 신입회원, 고객센터1
...

먼저 고객 서비스 테이블의 모든 고객 서비스를 쿼리한 후 새로 등록된 회원 테이블의 고객 서비스 필드를 업데이트합니다.
이제 그들 사이에 일대일 서신을 보내는 방법은 무엇입니까?

답글 내용:

새 회원이 등록될 때마다 고객 서비스 담당자가 자동으로 배정됩니다

총 3명의 고객 서비스 직원이 있습니다(향후 더 많은 고객 서비스가 추가될 예정입니다).
첫 번째 신입회원, 고객센터1
두 번째 신입회원, 고객센터2
세 ​​번째 신입회원, 고객센터3
네 번째 신입회원, 고객센터1
...

먼저 고객 서비스 테이블의 모든 고객 서비스를 쿼리한 후 새로 등록된 회원 테이블의 고객 서비스 필드를 업데이트합니다.
이제 그들 사이에 일대일 서신을 보내는 방법은 무엇입니까?

고객 서비스 유휴 상태를 고려하시겠습니까?
예를 들어 고객 서비스 a b c
이 때 3명이 와서 a b c에 할당했습니다.
이때 c가 있습니다. 이미 자기 일은 다 마쳤는데
이때 또 네 번째 사람을 누구한테 줘야 하나?

이러한 상황이 존재하지 않는다면

<code>$number = file_get_contents("log.txt");
file_put_contents("log.txt", ($number +1)%3);</code>

redis로 해보자.

목록 구조를 사용하여 먼저 고객 서비스 목록을 구축하세요. 새로운 사용자가 들어오면 팀 마지막에 고객 서비스를 RPOP한 다음 이 고객 서비스를 팀장에게 LPUSH하세요.

새 고객 서비스를 추가할 때 일련번호 순서를 변경하지 않으려면(예: 현재 2 3 1이고 새로 추가된 4 이후 목록이 2 3 4 1이 됨) 다음을 수행해야 합니다. 대기열을 제거하고 논리적인 판단을 내리세요. 필요하지 않은 경우 LPUSH를 대기열의 헤드로 직접 이동하세요.

redis를 사용하지 않는 경우에는 그냥 파일을 작성하시면 됩니다. 각 고객은 "rn"을 사용하며, 분리 검색 규칙은 위와 동일합니다

초대해주셔서 감사합니다. 간단하게 함수를 작성해 봤습니다.

<code><?php

function distribution_cs($user_id,$cs_total=3){

    if($user_id%$cs_total==0){
        return $cs_total;
    }
    return $user_id%$cs_total;
}


echo distribution_cs(1).",";
echo distribution_cs(2).",";
echo distribution_cs(3).",";
echo distribution_cs(4).",";
echo distribution_cs(5).",";
echo distribution_cs(6).",";
echo distribution_cs(7).",";
echo distribution_cs(8).",";
echo distribution_cs(9).",";
echo distribution_cs(10).",";
echo distribution_cs(11).",";
echo distribution_cs(12).",";
echo distribution_cs(13).",";
echo distribution_cs(14,4).",";
echo distribution_cs(15,4).",";
echo distribution_cs(16,4).",";
echo distribution_cs(17,4).",";
echo distribution_cs(18,4).",";
echo distribution_cs(19,4).",";
echo distribution_cs(20,4).",";
echo distribution_cs(21,5).",";</code>

출력결과

1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,4,1,

<code><?php

class serviceFactory{
    private $num;
    private $count = 0;

    function __construct($num){
        $this->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(),",";</code>

초간단한 해시 알고리즘, 고객 서비스 수 n, 신규 등록 사용자 ID m, 할당된 고객 서비스는 m % n + 1

이전에 비슷한 내용을 작성한 적이 있지만 고객 서비스가 아니기 때문에 여기에 코드를 게시하지 않겠습니다. 개인적인 접근 방식은 다음과 같습니다.

궁극적인 목표는 사용자를 오랫동안 기다리게 하지 않고 모든 고객 서비스를 바쁘게 만드는 것입니다.

새 사용자에게는 다음 중 하나를 할당하세요.

<code>if ( 空闲状态的客服数 >= 0 ){
    // 分配给最先进入空闲状态的那个客服
}else{
    // 说明现在每个客服都有用户在咨询
    // 并且可能某些客服下还有在排队等待的用户
    获取每个客服 **当前咨询任务** 的开始时间
    
    将这个用户分配给 当前资讯任务 的开始时间最早的 并且 后面排队人数最少的哪个客服
    // 其实上面还有一个权重的问题,比如 A 客服 当前客户资讯任务开始时间比 B 早 2分钟,但是 A 后面排队的人数比 B 客服多 1个,这就要靠 权重值 来计算是分配给 A 还是 B。
}
</code>

개인적으로 가상 고객 서비스를 할당할 수 있다고 생각합니다. 동시에 모든 고객 서비스를 바쁘게 유지하는 것은 쉽습니다.

저도 이 분야에 익숙하지 않습니다. 답변이 좋지 않은 경우 정정해 주시기 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PSR6 합리성 논의다음 기사:PSR6 합리성 논의