2014-01-10 5 views
4

사용자 등록시 전자 메일을 대기시키고 싶습니다.동기화 드라이버가있는 Laravel 4의 전자 메일 큐

Mail::queue('emails.activate', $data, function($message) use ($user) 
{ 
    $message->from('[email protected]', 'Mysite.com'); 
    $message->to($user->email, $user->username)->subject('Welcome'); 
}); 

큐 리스너가 실행 (PHP 장인 큐 : 듣고) 및 감독자 과정을 중단하는 경우가 다시 시작됩니다 확인 사용자 게시물 등록 양식은 그래서 나는이 작업을 수행.

작동하지만 사용자가 전자 메일을 받지만 등록 할 때 HTTP 응답이 매우 느립니다. 전자 메일을 직접 보내려했다면 예상대로입니다. 위의 모든 대기열에있는 코드에 주석을 달면 HTTP 응답 시간은 괜찮습니다.

나는 queue.app에 동기화 드라이버를 사용 : 마지막에서

'default' => 'sync', 
'connections' => array(

    'sync' => array(
     'driver' => 'sync', 
    ), 
    etc... 

, 나는 후위 내 자신의 개인 서버 (우분투)를 실행합니다. 누군가 내가 이메일을 큐에 넣는 동안 응답이 왜 느린 지 알아낼 수 있습니까?

답변

9

동기화 드라이버는 Laravel의 실행이 끝나기 바로 전에 대기중인 작업을 실행합니다. 그것이 동기 드라이버라고 불리는 이유입니다. 원하는 기능을 얻기 위해 동기화 드라이버를 변경해야합니다.

+0

좋습니다. 나는 방금 Symfony2의 "이메일 스풀링"기능이라고 가정했다 ... – JuCachalot

+0

동기 드라이버는 그보다 간단하다. 다른 드라이버를 사용해야한다 :) – SamV

+0

메일에서'척척 '기능을 사용할 수있다. 구성 파일을 원하는대로 개발할 수 있습니다. 그 외에도 적절한 대기열을 갖도록 대기열 드라이버를 변경해야합니다. –