> 백엔드 개발 > PHP 튜토리얼 > php-redis를 사용하여 모든 사용자에게 이메일을 보내세요. 데이터 양이 엄청납니다.

php-redis를 사용하여 모든 사용자에게 이메일을 보내세요. 데이터 양이 엄청납니다.

WBOY
풀어 주다: 2016-09-22 08:56:47
원래의
1364명이 탐색했습니다.

지금은 좀 혼란스럽습니다.

PHP 코드에서 인터페이스를 요청해야 하는 모든 배열을 redis 저장소에 넣고,
그런 다음 루프를 사용하여 배열을 brpop out하는데 이 프로세스는 모두 PHP 코드에서 실행되는 것 아닌가요?

PHP가 타임아웃되면 전체 프로세스를 종료해야 하는 것 아닌가요?

답글 내용:

지금은 좀 혼란스럽습니다.

PHP 코드에서 인터페이스를 요청해야 하는 모든 배열을 redis 저장소에 넣고,
그런 다음 루프를 사용하여 배열을 brpop out하는데 이 프로세스는 모두 PHP 코드에서 실행되는 것 아닌가요?

PHP가 타임아웃되면 전체 프로세스를 종료해야 하는 것 아닌가요?

PHP 스크립트를 시작하고 명령줄에서 실행

정답은 위층입니다.
비유를 들어보겠습니다. Redis는 A와 B 모두 연결할 수 있는 데이터 풀입니다. 여기서 A는 현재 작업이고 Redis에 쓰기만 담당하며 B는 또 다른 작업(예: Charles가 무한 시작이라고 말한 명령줄 방법) 루프 스크립트) Redis에서 이메일 데이터를 쿼리/삭제하는 역할만 담당합니다.

무한 루프 스크립트 의사 코드:

<code>set_timelimit(0);//让这个PHP程序可以无限时的执行
while(true) {
    $row = $redisInstance->shiftGroup('Email');//所有要发送的邮件是一个数组的话,取出第一个
    if (empty($row)) {
        sleep(1);//休息1秒
        continue;
    }
    SendMail($row);
}</code>
로그인 후 복사

Redis의 Pub/Sub 메커니즘을 사용하고 NodeJS를 사용하여 간단한 메시지 대기열을 구축할 수 있습니다.

<code>redis.subscribe('email','sms','push',function (err,count) {
   
});

redis.on('message',function (chan,msg) {
    //处理要发送的消息
});</code>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿