Как решить проблему медленной отправки почты в codeIgniter? - PullRequest
0 голосов
/ 30 августа 2011

Я использую класс почты codeIgniter по умолчанию, который очень медленно отправляет письмо, от начала до конца у меня уходит до 3 секунд. Могу ли я сделать что-то, чтобы заставить пользователя думать, что это быстрее. Я знаю, что отправка электронной почты занимает много времени, но могу ли я сначала показать результат пользователю, а затем отправить позже или что-то другое? Благодарю.

Ответы [ 3 ]

1 голос
/ 30 августа 2011

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

Предполагая, что это форма некотороголюбезно, что вы можете отправить его с помощью AJAX и заставить получающий скрипт отправить электронное письмо.В качестве альтернативы вы можете попробовать использовать почту PHP вместо SMTP.

0 голосов
/ 05 июня 2015

Прежде всего создайте пользовательский файл конфигурации

email.php внутри приложения / config

В моем случае я отправляю электронную почту с помощью идентификатора веб-почты, поэтому вот мой email.php

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'SMTP_HOST_NAME',
    'smtp_port' => 25,
    'smtp_user' => 'SMTP_USER_NAME', // change it to yours
    'smtp_pass' => 'SMTP_PASSWORD', // change it to yours
    'mailtype' => 'html',
    'charset' => 'iso-8859-1',
    'wordwrap' => TRUE
);

Затем убедитесь, что этот конфиг загружен автоматически. Откройте ваш Autoload.php внутри application / config и напишите

$autoload['config'] = array('email');

Теперь каждый раз, когда вы создаете контроллер с множеством методов, использующих электронную почту library.use parent contruct

function __construct()
{
  parent::__construct();          
  $this->load->library('email', $config);

}

И тогда вы можете легко отправлять письма

$this->email->from('info@example.net', 'Account');
 $this->email->to('johndoe@example.com');
 $this->email->cc('johndoe@example.com');
 $this->email->bcc('johndoe@example.com');
 $this->email->subject('Account Confirmation');
 $message = "any message body you want to send";
 $this->email->message($message);
 $this->email->send();

Это сокращает 2-3 секунды при отправке почты через библиотеку электронной почты CI. Спасибо

0 голосов
/ 30 августа 2011

Я никогда не сталкивался с проблемой производительности, связанной с функцией php mail (), которая не была проблемой в MTA (и, следовательно, не имела отношения к PHP).

Система SMTP (MTA)это все об управлении почтовыми очередями.Если ему не удается быстро поставить в очередь сообщения, значит, он не справляется со своей основной целью.

Но вы не предоставили никакой информации о том, какой MTA вы используете, как он настроен, на какой ОС работает PHP иликак почтовый интерфейс сконфигурирован в PHP.

Добавьте к этому тот факт, что стандартный почтовый класс codeigniter может использовать функцию PHP mail (), либо прямой вызов ОС SMTP-почтой, либо сетевой вызовПорт / сервер SMTP, не зная, что делает код, довольно сложно понять, в чем проблема.

Убедитесь, что ваш веб-сервер может разрешить хост SMTP (быстро), если вы используете соединение через порт SMTP скод.В противном случае это проблема с MTA.

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