【发布时间】:2014-01-01 10:45:01
【问题描述】:
当用户在我的应用中注册时,我想发送一封欢迎电子邮件。 当用户注册时,他会被重定向到他的个人资料页面。 我尝试在创建用户时发送电子邮件,但 email() 需要 7 秒来发送电子邮件,页面一直等到那时,然后在 7 秒后将用户重定向到配置文件。
这是不希望的。我想在用户注册后立即重定向用户,并在此过程中发送一封电子邮件。需要7秒不知道为什么。我在 godaddy 和 hostgator 帐户以及我的本地主机上在线尝试过。
顺便说一句:我正在使用 PHPMailer 发送电子邮件。
我怎样才能创建一个独立进程,在调用时使用电子邮件 $_POST[] 参数 {to、subject、body} 调用我的 sendMail.php。
虽然 ajax 调用可以解决问题,但是一旦我的页面从注册重定向到配置文件,电子邮件脚本就会停止。 我试过这段代码:
<script language="JavaScript">
$.post( "sendMail.php", { to: "$to", subject: "$subject", htmlBody: "$htmlBody", altBody: "$altBody" } );
location.href=profile.html
</script>
请帮忙,我搜索了很多,但他们在我不是的 shell 上工作,其他解决方案是基于 unix/linux 的。我想让它在 xampp 和 godaddy linux 共享主机上工作,没有 ssh 访问。
【问题讨论】:
-
最好的办法是设置一个作业服务器并将这些东西异步传递出去。
-
将重定向放在你的ajax调用的成功函数中。比如:$.post("sendMail.php", { to: "$to", subject: "$subject", htmlBody: "$htmlBody", altBody: "$altBody" }, function(){location.href= profile.html;});
-
查看php.net/ignore_user_abort,让您的 PHP 脚本在您的浏览器断开连接时运行
-
根据 PHP 服务器配置(即:flush() 是否有效),您可以终止与浏览器的连接并继续执行您的脚本。见this question
-
@FC 你的解决方案没问题,但它不能解决我的问题。重定向将在 7 秒后发生。
标签: php email xampp shared-hosting worker-process