В Laravel, как я могу отправлять электронную почту асинхронно с контроллера без использования (очереди и задания)? - PullRequest
0 голосов
/ 09 октября 2019

Я хочу отправить электронное письмо после того, как пользователь сразу же зарегистрировался, без задержки, вызванной функцией Mail :: send ().
Я не хочу отправлять письмо через несколько секунд, я хочу, чтобыбыть отправленным прямо сейчас, но не блокируя отправляющий его контроллер, и ради любви к Laravel не предлагайте (Queues & Jobs), пожалуйста.

Ответы [ 3 ]

0 голосов
/ 09 октября 2019

В этом случае вы можете использовать частичный ответ (если вы используете веб-сервер apache)

см. Эту информацию для получения дополнительной информации.

как вызывать функцию в фоновом кодировщике

0 голосов
/ 15 октября 2019

До сих пор я нашел 2 способа справиться с этим:

fastcgi_finish_request:
Я могу использовать fastcgi_finish_request(), но только после того, как я вернул / повторил представление (я 'я использую Laravel), в этом случае мне нужно изменить структуру моего кода для обработки различных ситуаций. и, конечно, в сочетании с error_get_last(), если что-то пойдет не так.

laravel-async-mail:
Удивительно, но я обнаружил, что на Packagist.com,увидев исходный код, он запускает новый процесс, чтобы инициировать команду ремесленника. (Я надеюсь, что кто-то может высказать мнение, имеет ли это недостаток в производственной среде или нет).
На данный момент я выбрал именно этот вариант, поскольку он делает именно то, что я ищу.

0 голосов
/ 09 октября 2019

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

$user->notify(new OrderPuchased($order));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...