지금은 좀 혼란스럽습니다.
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>