현재 위치: > 최신 기사 목록> Redis 메시지 구독의 PHP 지속적인 모니터링 및 대량의 메시지의 효율적인 처리

Redis 메시지 구독의 PHP 지속적인 모니터링 및 대량의 메시지의 효율적인 처리

M66 2025-07-17

PHP의 Redis 메시지 구독의 지속적인 모니터링 구현 배경 소개

Redis는 캐싱, 대기열 및 메시지 게시 및 구독 시나리오에 널리 사용되는 메모리 기반 고성능 키 가치 데이터베이스입니다. PHP 개발에서 Redis Extension의 도움을 받아 Redis 메시지를 계속 듣는 동안 쉽게 구현하여 게시 된 메시지에 실시간으로 응답하고 처리 할 수 있습니다.

Redis 확장을 설치하십시오

Redis 기능을 사용하기 전에 Redis 확장이 PHP 환경에 설치되어 있는지 확인하십시오. 다음 명령과 함께 PECL을 통해 설치할 수 있습니다.

 <span class="fun">PECL REDIS 설치</span>

설치가 완료되면 php.ini 구성 파일에 추가해야합니다.

 <span class="fun">Extension = redis.so</span>

구성을 완료 한 후 PHP 서비스를 다시 시작하고 Redis 확장을 정상적으로 사용하십시오.

Redis 메시지 구독 및 처리 예제

Redis는 각각 메시지 가입 및 게시를위한 구독게시 명령을 제공합니다. PHP에서 구독 메소드를 호출하여 지정된 채널의 메시지를 지속적으로 듣고 콜백 함수를 통해 수신 된 메시지를 처리 할 수 있습니다.

 <?php
$redis = new Redis();
$redis->connect('localhost', 6379);

$redis->subscribe(['channel'], function($redis, $channel, $message) {
    // 처리 된 메시지 처리
    echo "Received message from channel {$channel}: {$message}\n";
});

위의 코드에서 Redis 인스턴스를 생성하고 Redis 서버에 연결하고 채널 이라는 채널을 구독 한 다음 콜백 함수에서 수신 된 메시지를 인쇄하십시오.

다량의 메시지의 다중 프로세스 동시 처리

단일 프로세스 구독 모델은 높은 동시성 시나리오의 요구를 충족시킬 수 없습니다. 다중 프로세스 기술을 사용하면 여러 소비자 프로세스를 시작할 수 있으며 메시지를 동시에 처리하여 시스템 처리량을 향상시킬 수 있습니다.

 <?php
$redis = new Redis();
$redis->connect('localhost', 6379);

// 생성 된 프로세스 수,수요에 따라 조정하십시오
$numWorkers = 4;

for ($i = 0; $i < $numWorkers; $i++) {
    $pid = pcntl_fork();
    if ($pid == -1) {
        die("Could not fork");
    } elseif ($pid) {
        // 부모 과정,다음 어린이 과정을 계속 만듭니다
        continue;
    } else {
        // 하위 프로세스,구독 및 메시지 처리 로직을 실행합니다
        $redis->subscribe(['channel'], function($redis, $channel, $message) {
            // 처리 된 메시지 처리
            echo "Received message from channel {$channel}: {$message}\n";
        });
        break;
    }
}

// 等待하위 프로세스退出
while (pcntl_waitpid(0, $status) != -1) {}

코드에서 다중 하위 프로세스는 pcntl_fork ()를 사용하여 생성되며, 각각은 동시 처리를 실현하기 위해 독립적으로 메시지를 가입합니다. 학부모 과정은 아동 프로세스를 만들고 종료되기를 기다리는 일입니다.

주목해야 할 것

Redis Extension은 비 블로킹 IO를 채택하고 다중 프로세스 구독이 레이스 조건을 유발할 수 있으므로 특정 시나리오를 기반으로 합리적인 잠금 메커니즘을 구현하여 프로세스 간 조정 및 데이터 보안을 보장하는 것이 좋습니다.

요약

이 기사는 PHP의 Redis Extension을 통해 Redis 메시지 구독을 지속적으로 듣고 다중 프로세스 기술을 사용하여 많은 양의 메시지를 동시에 효율적으로 처리하는 방법을 소개합니다. 이 솔루션은 간결하고 실용적 일뿐 만 아니라 메시지 처리 성능을 크게 향상시켜 실시간 응답 및 대규모 메시지 처리가 필요한 응용 프로그램 시나리오에 적합합니다.