Что я сделал до сих пор:
1) Обновлен драйвер очереди для базы данных в .env
2) Моя функция почтового контроллера выглядит так:
public function sendEmail()
{
$emailJob = (new SendEmailJob())->delay(Carbon::now()->addSeconds(3));
dispatch($emailJob);
exit();
}
3) дескриптор SendEmailJob
public function handle()
{
Mail::to('mail@gmail.com')->send(new SendMailable());
echo 'email sent';
}
4) SendMailable Mail имеет следующее
public function build()
{
return $this->view('emails.ownership');
}
Я хочу отправлять почту практически мгновенно после нажатия на URL.Поскольку я запускаю php artisan queue:listen
с задержкой в 3 секунды, перед любым действием требуется много времени.Я вижу некоторые данные в таблице заданий с 0 попытками.
Через долгое время появляется следующее сообщение об ошибке в командном окне
Symfony\Component\Process\Exception\ProcessTimedOutException : The process ""C:\wamp64\bin\php\php7.2.10\php.exe" "artisan" queue:work --once --queue="default" --delay=0 --memory=128 --sleep=3 --tries=0" e
xceeded the timeout of 60 seconds.
at C:\wamp64\www\project\vendor\symfony\process\Process.php:1154
1150|
1151| if (null !== $this->timeout && $this->timeout < microtime(true) - $this->starttime) {
1152| $this->stop(0);
1153|
> 1154| throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL);
1155| }
1156|
1157| if (null !== $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) {
1158| $this->stop(0);
Exception trace:
1 Symfony\Component\Process\Process::checkTimeout()
C:\wamp64\www\project\vendor\symfony\process\Process.php:383
2 Symfony\Component\Process\Process::wait()
C:\wamp64\www\project\vendor\symfony\process\Process.php:202
Кстати, почта может быть отправлена напрямую без этой очереди.,Кроме того, обязательно ли запускать очередь php artisan: listen?Как я должен запустить это на сервере без доступа оболочки?