인터넷과 빅데이터 시대의 도래로 인해 메시지 대기열은 비즈니스 개발 및 데이터 처리에 없어서는 안 될 부분이 되었습니다. PHP 분야에서 ThinkPHP 프레임워크는 항상 개발자들 사이에서 인기 있는 선택이었습니다. 이 기사에서는 ThinkPHP6을 사용하여 메시지 대기열을 구현하는 방법을 소개하고 몇 가지 실용적인 코드 예제를 제공합니다.
메시지 대기열 만들기를 시작하기 전에 메시지 대기열 확장(예: 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
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 메서드에서는 수신된 메시지를 처리하는 논리를 사용자 정의할 수 있습니다. 예를 들어, 데이터를 구문 분석하여 데이터베이스에 저장한 다음 문자 메시지나 이메일 알림을 사용자에게 보낼 수 있습니다.
위 구성을 완료한 후 작업자 모드를 시작하려면 터미널에서 다음 명령만 실행하면 됩니다.
php think worker:server
메시지 대기열을 테스트할 때 다음을 수행할 수 있습니다. 두 개의 터미널을 엽니다.
첫 번째 터미널에서 다음 명령을 실행하여 메시지를 대기열에 푸시합니다.
curl http://localhost:2345/task/send
두 번째 터미널에서 다음 명령을 실행하고 수신된 메시지를 관찰합니다.
php think worker:client
이 문서에서는 ThinkPHP6을 사용하여 메시지 대기열을 구현하는 방법을 설명합니다. 이는 개발자가 대규모 데이터 처리, 비동기 작업 실행 등을 더 빠르게 처리하고 애플리케이션의 성능과 안정성을 향상시키는 데 도움이 될 수 있습니다.
위 내용은 ThinkPHP6을 사용하여 메시지 대기열 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!