내 앱은 시간당 200개의 이메일로 제한되는 공유 호스팅 플랫폼에서 호스팅됩니다.
내 애플리케이션이 Database Connection Driver를 실행 중이고 작업 테이블에 3000개의 작업이 있습니다.
호스팅에 문제가 없는지 확인하기 위해 이 대기열을 30초 또는 1분마다 1개의 이메일만 보내도록 제한하고 싶습니다.
연구: 이 튜토리얼의 지연, 이 질문의 속도 제한을 시도했지만 응답이 없습니다. 이 laravel 문서의 지연 작업을 시도했지만 아무것도 작동하지 않았습니다.
질문: redis 대기열 연결처럼 데이터베이스 대기열 연결에서 대기열을 제한할 수 있는 방법이 있습니까? 예:
으아악내 구현: 첫 번째 작업만 지연하고 다른 작업은 즉시 보냅니다
으아악**ENV 파일:**
// Allow only 1 email every 30 seconds Redis::throttle('any_key')->allow(1)->every(30)->then(function () { Mail::to($this->email)->send(new NotificationEmail($this->data) ); Log::info('Emailed order ' . $this->email); }, function () { // Could not obtain lock; this job will be re-queued return $this->release(2); });
php artisanqueue:listen을 실행해 보셨나요? 그렇다면 아래 코드를 확인해 보세요. 아마도 도움이 될 것입니다
컨트롤러 내:
으아아아SendMailJob 클래스
으아아아