Я использую почтовый класс codeIgniter по умолчанию, который очень медленный для меня, чтобы отправить электронное письмо, и мне требуется до 3 секунд от начала до конца. Могу ли я сделать что-то, чтобы заставить пользователя думать, что это быстрее. Я знаю, что отправка электронной почты требует времени, но могу ли я сначала показать результат пользователю и отправить позднее или что-то другое обходное решение? Благодарю.
Это будет не тот класс, который будет медленным, это будет почтовый сервер SMTP, с которым вы пытаетесь подключиться, и отправляет электронное письмо, которое делает задержку страницы.
Предполагая, что это какая-то форма, вы можете отправить ее с помощью AJAX и получить скрипт отправки по электронной почте. В качестве альтернативы вы можете попробовать использовать PHP-почту, а не SMTP.
Я никогда не видел проблемы с производительностью, связанной с функцией php mail (), которая не была проблемой в MTA (и, следовательно, не имеет ничего общего с PHP).
SMTP-система (MTA) предназначена для управления очередями электронной почты. Если он не успевает мгновенно размещать сообщения, он не выполняет свою основную задачу.
Но вы не указали информацию о том, какую MTA вы используете, как она настроена, какая ОС работает на PHP и как настроен почтовый интерфейс на PHP.
Добавьте к этому тот факт, что стандартный класс почтового класса codeigniter может использовать функцию PHP mail () или прямой вызов ОС для почтовой программы SMTP или сетевой вызов на порт / сервер SMTP, не зная, что этот код делает довольно сложный чтобы понять, в чем проблема.
Убедитесь, что ваш веб-сервер может быстро разрешить хост SMTP (если он используется), если вы используете соединение SMTP-порта из вашего кода. В противном случае это проблема с MTA.
Прежде всего создайте настраиваемый файл конфигурации
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 внутри приложения / 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. благодаря