최신 실시간 애플리케이션에서 메시지 알림 기능은 필수 구성 요소가 되었습니다. Redis에서 제공하는 게시 및 구독 메커니즘(Pub/Sub)을 사용하면 서버와 클라이언트가 실시간으로 메시지와 상호 작용할 수 있습니다. PHP에서 Swoole 코루틴 확장을 결합하면 고성능, 지속적인 모니터링 메시지 처리 및 이메일 알림 시스템을 구현할 수 있습니다.
코드를 작성하기 전에 Swoole 및 Redis 확장이 환경에 설치되어 있는지 확인해야 합니다. Linux 시스템은 다음 명령을 사용하여 설치할 수 있습니다.
pecl install swoole
pecl install redis
Windows 시스템을 사용하는 경우 PECL 공식 웹사이트로 이동하여 해당 DLL 확장 파일을 수동으로 다운로드하고 설치할 수 있습니다.
Redis 메시지 구독을 지속적으로 모니터링하고 이메일 전송을 트리거하려면 inform.php 라는 스크립트 파일을 생성하십시오. 코드 예시는 다음과 같습니다.
<?php
require 'vendor/autoload.php';
use Swoole\Coroutine;
use Swoole\Coroutine\Redis;
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->subscribe(['channel'], function ($redis, $channel, $message) {
// 메시지 수신 후 이메일 알림 보내기
sendEmail($message);
});
Coroutine::create(function () use ($redis) {
$redis->subscribe(['channel'], function ($redis, $channel, $message) {
// 메시지 수신 후 이메일 알림 보내기
sendEmail($message);
});
});
function sendEmail($message) {
// 이메일 전송 라이브러리를 사용하여 이메일 보내기
// code...
}
Coroutine::create(function () use ($redis) {
while (true) {
$redis->ping();
Coroutine::sleep(5);
}
});
위 코드에서는 먼저 Redis 클라이언트를 인스턴스화하고 Redis 서버에 연결합니다. subscribe 메소드를 통해 지정된 채널을 구독하세요. 새 메시지가 모니터링되면 콜백 함수가 트리거되고 sendEmail() 함수가 호출되어 이메일 알림을 보냅니다. 이 기능은 프로젝트 필요에 따라 이메일 전송 라이브러리(예: PHPMailer, SwiftMailer 등)를 통합할 수 있습니다.
또한 Swoole 코루틴을 사용하면 프로그램이 백그라운드에서 활성 상태를 유지하고 정기적으로 Redis 서버와 통신하여 연결이 끊어지는 것을 방지할 수 있습니다.
위 코드를 저장한 후 명령줄에서 다음 명령을 실행하여 모니터링을 시작합니다.
php notify.php
이 스크립트는 계속 실행되고 Redis 채널에서 메시지 변경 사항을 계속 모니터링하며 새 메시지가 수신되면 자동으로 이메일 알림을 보냅니다.
PHP의 Swoole 코루틴을 Redis 게시 및 구독 메커니즘과 결합하여 실시간 메시지 모니터링 및 이메일 알림 시스템을 효율적으로 구현할 수 있습니다. 이 아키텍처는 실시간 채팅 시스템, 시스템 경고 알림, 데이터 변경 푸시와 같은 애플리케이션 시나리오에 특히 적합합니다. 비동기 작업의 처리 논리를 단순화할 뿐만 아니라 시스템의 동시성 성능과 응답 속도를 크게 향상시킵니다.