是否有可能让PHPmailer在页面加载后发送邮件?

时间:2014-05-31 13:24:08

标签: javascript php phpmailer

我有一个脚本,使用PHPMailer发送至少一个电子邮件,但可能最多5个。 发送邮件的操作会延迟页面加载大约2-3秒。 这几乎是可以接受的,但显然每增加一封电子邮件,这会增加两倍和三倍。 即使在页面HTML之后放置代码也没有什么区别。 我知道PHP显然是一个"单线程"应用程序,但肯定有更聪明的方法吗?是否有一些花哨的javascript applet会在后台静默加载另一个页面,还是有一个更简洁的方式? 欢迎任何提示。

2 个答案:

答案 0 :(得分:0)

我通常编写一个单独的脚本,接受必要的数据作为命令行参数,然后将该脚本作为后台进程启动,以便主脚本可以退出而无需等待它完成。像这样:

exec("nohup /usr/bin/php mailerscript.php $param1 $param2 > /dev/null &");

在mailerscript.php中,您可以$param1$param2访问$argv[1]$argv[2]。确保mailerscript.php对于webserver进程是可执行的,并且在exec中指定了它的完整路径。

答案 1 :(得分:0)

不知道为什么有人对这篇文章进行了修改,因为它是一个完全有效的问题,但是对于任何人未来的参考,我通过使用jquery / ajax嵌入页面来解决这个问题,如下所示:

<div id="contentext"></div>
<script>
$(document).ready(function() {
$("#contentext").load("sendmail.php");
});
</script>

这样页面立即加载,启动sendmail脚本,并从PHPmailer等输出结果/错误。

感谢其他建议:exec方法很有用,就像定期处理脚本选项的cron作业一样,但是,我更喜欢这种方法,因为它可以保留本机PHP / Javascript环境中的内容,而无需调用外部通过操作系统等进行处理。