>  Q&A  >  본문

Laravel, 데이터베이스 대기열을 분당 1개의 이메일로 제한

내 앱은 시간당 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);
});

P粉310931198P粉310931198285일 전533

모든 응답(1)나는 대답할 것이다

  • P粉448130258

    P粉4481302582023-12-14 09:36:35

    php artisanqueue:listen을 실행해 보셨나요? 그렇다면 아래 코드를 확인해 보세요. 아마도 도움이 될 것입니다

    컨트롤러 내:

    으아아아

    SendMailJob 클래스

    으아아아

    회신하다
    0
  • 취소회신하다