ThinkPHP6을 사용하여 메시지 대기열 구현

PHPz
풀어 주다: 2023-06-21 17:51:39
원래의
2822명이 탐색했습니다.

인터넷과 빅데이터 시대의 도래로 인해 메시지 대기열은 비즈니스 개발 및 데이터 처리에 없어서는 안 될 부분이 되었습니다. PHP 분야에서 ThinkPHP 프레임워크는 항상 개발자들 사이에서 인기 있는 선택이었습니다. 이 기사에서는 ThinkPHP6을 사용하여 메시지 대기열을 구현하는 방법을 소개하고 몇 가지 실용적인 코드 예제를 제공합니다.

  1. 메시지 대기열 확장 설치

메시지 대기열 만들기를 시작하기 전에 메시지 대기열 확장(예: RabbitMQ 또는 Beanstalkd)을 설치해야 합니다. 이 기사에서는 RabbitMQ를 예로 들어 설치 단계를 설명합니다.

1.1 Erlang 설치

RabbitMQ는 Erlang 언어로 개발되었으므로 먼저 Erlang을 설치해야 합니다.

1.2 RabbitMQ 설치

RabbitMQ를 설치하기 전에 wget 및 gnupg 도구를 설치해야 합니다. 터미널에서 다음 명령을 실행하세요.

sudo apt-get install wget gnupg -y
로그인 후 복사

그런 다음 RabbitMQ를 다운로드하고 설치하세요.

wget -O - "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian buster erlang
deb https://dl.bintray.com/rabbitmq/debian buster main
EOF
sudo apt-get update -y
sudo apt-get install rabbitmq-server -y
로그인 후 복사
  1. 큐와 소비자 만들기

In ThinkPHP6 , 작업자(작업자 프로세스)를 사용하여 대기열과 소비자를 생성할 수 있습니다. 구체적인 단계는 다음과 같습니다.

2.1 작업자 모드 켜기

config 디렉터리의 app.php 파일에서 다음 코드 세그먼트를 찾습니다.

    'worker' => [
        'type'  => 'socket',   // 驱动方式
        'host'  => '0.0.0.0',  // 监听地址
        'port'  => 2345,       // 监听端口
    ],
로그인 후 복사

수정 다음 내용에 대해:

    'worker' => [
        'type'      => 'rabbitmq',
        'host'      => 'localhost',
        'port'      => 5672,
        'user'      => 'guest',
        'password'  => 'guest',
        'vhost'     => '/',
        'exchange'  => 'test',  // 交换机名称
        'queue'     => 'test',  // 队列名称
    ],
로그인 후 복사

여기서는 드라이버 모드를 Rabbitmq로 변경하고 RabbitMQ 연결 관련 구성 정보(로컬 주소, 사용자 이름, 비밀번호 등)와 스위치 이름, 대기열 이름은 다음과 같습니다. 지정.

2.2 메시지 생산자 만들기

앱 디렉터리에 Task라는 컨트롤러를 만듭니다. 메서드 이름은 send입니다. 코드는 다음과 같습니다.

namespace appcontroller;

use thinkworkerServer;

class Task extends Server
{
    public function send()
    {
        $data = ['name'=>'ThinkPHP','score'=>100];
        $this->worker->push(json_encode($data));
    }
}
로그인 후 복사

여기에서는 메시지 대기열에 데이터를 푸시하는 데 Json 형식이 사용됩니다.

2.3 메시지 소비자 만들기

앱 디렉터리에 Worker라는 컨트롤러를 만듭니다. 메서드 이름은 onMessage입니다. 코드는 다음과 같습니다.

namespace appcontroller;

use thinkworkerServer;

class Worker extends Server
{
    public function onMessage($connection, $data)
    {
        // 处理逻辑
    }
}
로그인 후 복사

onMessage 메서드에서는 수신된 메시지를 처리하는 논리를 사용자 정의할 수 있습니다. 예를 들어, 데이터를 구문 분석하여 데이터베이스에 저장한 다음 문자 메시지나 이메일 알림을 사용자에게 보낼 수 있습니다.

  1. Worker 실행

위 구성을 완료한 후 작업자 모드를 시작하려면 터미널에서 다음 명령만 실행하면 됩니다.

php think worker:server
로그인 후 복사
  1. 메시지 대기열 테스트

메시지 대기열을 테스트할 때 다음을 수행할 수 있습니다. 두 개의 터미널을 엽니다.

첫 번째 터미널에서 다음 명령을 실행하여 메시지를 대기열에 푸시합니다.

curl http://localhost:2345/task/send
로그인 후 복사

두 번째 터미널에서 다음 명령을 실행하고 수신된 메시지를 관찰합니다.

php think worker:client
로그인 후 복사

이 문서에서는 ThinkPHP6을 사용하여 메시지 대기열을 구현하는 방법을 설명합니다. 이는 개발자가 대규모 데이터 처리, 비동기 작업 실행 등을 더 빠르게 처리하고 애플리케이션의 성능과 안정성을 향상시키는 데 도움이 될 수 있습니다.

위 내용은 ThinkPHP6을 사용하여 메시지 대기열 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿