Laravel 5.3 Queue Job не работает

Я пытаюсь отправить действие отправки электронной почты с помощью Laravel. database очередь
однако этот процесс все еще продолжается в моем браузере, а не работает позади.

это мой контроллер

protected function importUserExcel(UploadedFile $file, Request $request){

$user_role = Role::where('name','=','user')->first();\Excel::load($file, function($reader) use ($user_role) {
$excel =  $reader->select()->get();
foreach($excel[0] as $line){
$user = User::firstOrnew([
'email' => $line['email']]);
$user->email = $line['email'];
$user->name = $line['name'];
$user->password= bcrypt(srand(15));

$user->town = $line['town'];
$user->dealer_code = $line['dealer_code'];
$user->type = $line['type'];
//  $user->save();
$user->sendUserEmail();
//$user->attachRole($user_role);}
});
}

это моя модельная функция

public function sendUserEmail()
{
$delay = Carbon::now()->addMinutes(15);
\Log::info("Request Begins");
$user = new SendEmails($this);
$user->delay($delay);
dispatch($user);
\Log::info("Request Ends");
}

и это моя работа

класс SendEmails реализует ShouldQueue
{
использовать InteractsWithQueue, Queueable, SerializesModels;

/**
* Create a new job instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->handle($user);

}

/**
* Execute the job.
*
* @return void
*/
public function handle(User $user)
{
$broker = $user->broker;
$brokerInstance = \Password::broker($broker);
view()->share('locale', app()->getLocale());
$response = $brokerInstance->sendResetLink([ 'email' => $user->email ], function (Message $message) {
$message->subject(trans('emails.welcome_subject'));
});
}

}

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

введите описание изображения здесь

2

Решение

Конструктор вашей работы не следует вызовите метод handle (); он должен просто установить свойства, необходимые для метода handle. Ваш работник очереди должен вызвать метод handle.

Ваш вызов app () -> getLocale () может быть неправильным, если вы устанавливаете локаль для запроса; задание выполняется из другого процесса без промежуточного программного обеспечения или связанного http-запроса.

class SendEmails implements ShouldQueue { use InteractsWithQueue, Queueable, SerializesModels;
protected $user;

public function __construct(User $user) {
$this->user = $user;
}

public function handle() {
$user = $this->user;
$broker = $user->broker;
$brokerInstance = \Password::broker($broker);

view()->share('locale', app()->getLocale());
$response = $brokerInstance->sendResetLink([ 'email' => $user->email ], function (Message $message) {
$message->subject(trans('emails.welcome_subject'));
});
}
}
1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector