【发布时间】:2011-11-06 22:50:14
【问题描述】:
我正在使用默认的 codeIgniter 邮件类,这对我来说发送电子邮件非常慢,从开始到结束需要 3 秒。我可以做些什么让用户认为它更快。我知道发送电子邮件需要时间,但我可以先向用户显示结果,然后再发送或其他解决方法吗?谢谢。
【问题讨论】:
-
你在哪个代码上做了这个基准测试?提交表单后刷新整个页面?
标签: php email codeigniter
我正在使用默认的 codeIgniter 邮件类,这对我来说发送电子邮件非常慢,从开始到结束需要 3 秒。我可以做些什么让用户认为它更快。我知道发送电子邮件需要时间,但我可以先向用户显示结果,然后再发送或其他解决方法吗?谢谢。
【问题讨论】:
标签: php email codeigniter
首先创建一个自定义配置文件
应用程序/配置中的email.php
在我的情况下,我通过 webmail id 发送电子邮件,所以这是我的 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
);
然后确保这个配置是自动加载的。在 application/config 中打开你的 Autoload.php 并写入
$autoload['config'] = array('email');
现在,每当您使用电子邮件库创建具有许多方法的控制器时。使用父结构
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();
通过 CI 电子邮件库发送邮件时,这减少了 2-3 秒。 谢谢
【讨论】:
我从未见过与 php 的 mail() 函数相关的性能问题报告,这在 MTA 中不是问题(因此与 PHP 无关)。
SMTP 系统 (MTA) 就是管理电子邮件队列。如果它不能及时将消息排入队列,那么它的主要目的就失败了。
但是您没有提供有关您正在使用的 MTA、它是如何配置的、PHP 运行在什么操作系统上的信息,也没有提供有关在 PHP 中如何配置邮件接口的信息。
此外,标准的 codeigniter 邮件类可以使用 PHP mail() 函数,或直接操作系统调用 SMTP 邮件程序或网络调用 SMTP 端口/服务器,而无需知道代码在做什么很难理解问题是什么。
如果您使用代码中的 SMTP 端口连接,请检查您的网络服务器是否可以(立即)解析 SMTP 主机。否则就是 MTA 的问题。
【讨论】:
不会是慢的类,而是您尝试连接的 SMTP 邮件服务器发送导致页面延迟的电子邮件。
假设它是某种形式,您可以使用 AJAX 提交它并让接收脚本发送电子邮件。或者,您可以尝试使用 PHP 邮件而不是 SMTP。
【讨论】: