현대 웹 개발에서 지연된 작업 처리는 매우 일반적인 요구 사항입니다. 효율적인 메모리 데이터베이스로서 Redis는 강력한 구독/게시 메커니즘을 제공하여 효율적인 대기 시간 작업 시스템을 쉽게 구현할 수 있습니다. 이 기사는 PHP에서 Redis의 구독 메커니즘을 사용하여 메시지를 지속적으로 듣고 지연된 작업을 처리하는 방법을 자세히 설명합니다.
시작하기 전에 몇 가지 기본 개념을 이해해야합니다.
메시지 구독에 Redis를 사용하기 전에 먼저 PHP에 Redis 확장이 설치되어 있는지 확인해야합니다. 다음 명령을 사용하여 설치할 수 있습니다.
$ pecl Redis 설치
다음으로 Redis의 메시지 구독을 지속적으로 듣고 지연된 작업을 처리하는 방법을 단계별로 구현합니다.
먼저 Redis 서버에 연결해야합니다. 연결 코드는 다음과 같습니다.
<?php $redis = new Redis(); $redis->연결 ( '127.0.0.1', 6379);
다음으로 지연된 작업을 Redis에 게시해야합니다. 작업 게시를위한 코드는 다음과 같습니다.
<?php // 작업 데이터를 정의합니다 $taskData = [ 'taskId' => 1, 'taskName'=> '지연 작업 예', // ... 다른 필드]; <p>// 작업의 트리거 시간 계산 (현재 시간 후 60 초라고 가정)<br> $ triggertime = time () + 60;</p> <p>// 작업 데이터를 JSON 형식으로 직렬화하고 지정된 채널에 게시합니다.<br> $ redis-> publish ( 'Delayed-Tasks', json_encode ($ taskData));</p> <p>// 작업의 트리거 시간을 점수로 저장하고 순서 컬렉션의 값으로 작업 데이터를 저장합니다.<br> $ redis-> zadd ( '예약 된 타스크', $ triggertime, json_encode ($ taskData));<br>
Redis의 구독 메커니즘을 사용하면 메시지가 도착하면 메시지를 지속적으로 듣고 지연된 작업을 처리 할 수 있습니다. 코드 예는 다음과 같습니다.
<?php // 콜백 함수를 정의합니다,수신 된 메시지를 처리하는 데 사용됩니다 function handleMessage($channel, $message) { $taskData = json_decode($message, true); // 작업 데이터 분석 // 지연된 작업을 처리합니다 // ... echo "수신 된 채널 {$channel} 소식:{$message}"; } <p>// redis 구독 객체를 만듭니다<br> $ 구독자 = 새로운 redis ();<br> $ 구독-> 구독 ([ 'Delided-Tasks'], 'handlemessage'); // 지정된 채널의 메시지를 구독하십시오</p> <p>// 메시지를 지속적으로 모니터링합니다<br> while ($ 구독자-> pubsubloop ()) {<br> // 작업을 적극적으로 수행 할 필요가 없으며 PubSubloop은 메시지가 도착하면 콜백 함수를 호출합니다.<br> }<br>
이 자습서를 통해 PHP에서 Redis의 구독 메커니즘을 사용하여 메시지를 지속적으로 듣고 지연된 작업을 처리하는 방법을 이해합니다. Redis의 효율적인 메시징 메커니즘을 사용하여 신뢰할 수있는 지연 작업 스케줄링 시스템을 구축하여 PHP 응용 프로그램에 강력한 작업 처리 기능을 제공 할 수 있습니다. 이 기사를 도입하여 다양한 지연 작업을 처리하기 위해 PHP와 Redis를 더 잘 적용 할 수 있기를 바랍니다.