laravel mail queueing — недостаточно данных для десериализации

я использую

Ubuntu
laravel 4.2
beanstalked

когда я пытаюсь

php artisan queue:work

это возвращается

 [ErrorException]
Insufficient data for unserializing - 1403 required, 218 present

функция почты (пакет доверия)

Mail::queueOn(
Config::get('confide::email_queue'),
Config::get('confide::email_account_confirmation'),
compact('user'),
function ($message) use ($user) {
$message
->to($user->email, $user->username)
->subject(Lang::get('confide::confide.email.account_confirmation.subject'));
}
);

0

Решение

Я тоже сталкивался с этой проблемой и думаю, что у меня есть решение.

Когда электронная почта попадает в очередь, Laravel необходимо сериализовать все данные электронной почты, чтобы ее можно было вызвать позже, когда очередь обрабатывается.

Проблема заключается в том, что при попытке сериализации экземпляра модели Eloquent (в данном случае $ user) сериализованная строка будет слишком большой для сохранения в очереди.

Чтобы обойти это, сохраните нужные значения в массиве перед вызовом Mail :: queueOn и прикрепите этот массив к закрытию, которое вы передаете в качестве аргумента Mail :: queueOn.

$data = array(
'email' => $user->email,
'username' => $user->username
);

Mail::queueOn(
Config::get('confide::email_queue'),
Config::get('confide::email_account_confirmation'),
compact('user'),
function ($message) use ($data) {
$message
->to($data['email'], $data['username'])
->subject(Lang::get('confide::confide.email.account_confirmation.subject'));
}
);

Я нашел решение, глядя на этот вопрос в GitHub

2

Другие решения

У нас было это в последнее время с тем же вопросом, но я нашел еще одну вещь, которая не так:

Config::get('confide::email_queue'),
Config::get('confide::email_account_confirmation'),

а также

(Lang::get('confide::confide.email.account_confirmation.subject'));

не правильно. Там нет 2 :: для имени файла, это:

Config::get('confide.email_queue');

и так далее для всех остальных объявлений!

это

filename.arraykey
0