я использую
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'));
}
);
Я тоже сталкивался с этой проблемой и думаю, что у меня есть решение.
Когда электронная почта попадает в очередь, 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
У нас было это в последнее время с тем же вопросом, но я нашел еще одну вещь, которая не так:
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