вызывающая функция в фоновом коде - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу отправлять почту в фоновом режиме, у меня есть функция для нее, и она работает нормально, но она блокирует мое сообщение для передачи пользователю!

// Я попробовал это

$er=1; 
$outmsg = 'You are now registered,please check your email for verification!';
$this->common_model->partialResponse();
$this->mailer->send_mail($mail,$Mailconfig);
$type = ($er==1) ? "success" : "danger";
echo json_encode(array('msgtype'=>$type,'datacon'=>$outmsg));



function partialResponse()
  {
     $response=array();
     ignore_user_abort(true);
     ob_start();
     echo json_encode($response);
     header("Status: 200");
     header($_SERVER["SERVER_PROTOCOL"] . " 200 Ok");
     header("Content-Type: application/json");
     header('Content-Length: '.ob_get_length());
     ob_end_flush();
     ob_flush();
     flush();
 }

1 Ответ

0 голосов
/ 12 апреля 2019

Недавно я столкнулся с той же проблемой: медленная отправка электронной почты. Использование SMTP еще хуже. 3 ~ 4 секунды для отправки электронного письма.

Сначала я думаю, что мог бы сделать что-то, что вы пытаетесь архивировать, но этот метод может вызвать столько проблем, что оно того не стоило.

Я заканчиваю создание таблицы электронной почты, чтобы поставить в очередь (и сохранить как историю) все электронные письма, которые могут быть отправлены.

Для обработки этой очереди я создал cronjob для запуска определенного контроллера / метода просто для отправки этих писем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...