2014-12-11 2 views
0

Я работаю с обработкой ошибок Laravel и хочу отправить электронное письмо из App :: error при возникновении исключения.Laravel Mail :: позже в обработке ошибок

После код работает, и я получаю электронные письма

$data = array('exception' => $exception,'ip'=>$ip,'host'=>$host,'url'=>$url); 
$details=['server'=>$server]; 
Mail::later(10,'emails.exception', $data, function($message) use($details) 
{ 
    $message->from('[email protected]'); 
    $message->to('[email protected]')->subject('Error on '.$details['server']); 

}); 

Однако, когда я изменяю из почты :: отправить почту :: позже (20, я получаю следующее сообщение об ошибке при исключение встречается,

Ошибка в обработчик исключений: Array для преобразования строки (Вид: /app/views/emails/exception.blade.php) в/приложение/хранение/просмотров/1c8e0883061171a30b7f85d86c83370d: 8

Мой шаблон электронной почты выглядит следующим образом

Client: {{$ip}} 
Host: {{$host}} 
URL: {{$url}} 
Exception: 
{{$exception}} - This is where the error is 
+0

Что такое '$ переменная server'? – lukasgeiter

ответ

0

При использовании Mail::later, Laravel зависит от jeremeamia/super_closure для сериализации PHP Closure объектов. Я подозреваю, что ваше исключение сериализуется в массив.

Поскольку вы используете $exception исключительно в виде строки (не объект), вы можете решить эту проблему, stringifying исключение перед тем передавая его Mail::later с помощью типажей:

$data = array('exception' => (string) $exception, 'ip'=> $ip, 'host'=> $host, 'url'=> $url); 
+0

Это решило мою проблему, но я заметил, что даже с Mail :: позже, я получаю 7 секунд времени отклика vs. Если я отключу часть почты, я верну ее за секунду! – NileshBhise

+0

Ничего, у меня нет очереди. Я думаю, что когда я реализую beanstalkd, он будет обрабатывать отправку позже – NileshBhise

Смежные вопросы