如何使用睡眠延迟PHP电子邮件
我正在使用php脚本发送一封电子邮件,我想在一段时间后发送邮件。我将为此使用sleep()
。但是,我会在哪里推迟发送电子邮件?这里是我的代码:如何使用睡眠延迟PHP电子邮件
<?php
if(isset($_POST['email']))
{
$headers = "From: Memory Jet <[email protected]>\r\n";
$to_visitor = $_POST["email"];
$common_data = $_POST["message"];
//I originally put the delay here, it didn't work
mail($to_visitor, "Your Memory", $common_data, $headers);
} ?>
在此先感谢! =)-Ben
两个问题:1)你说的“它不工作”的意思;它做了什么? 2)为什么在发送邮件之前要等很长时间?
另外,我会强烈建议不要调用PHP脚本sleep()
,因为它会延迟脚本完成,因此,在HTML浏览器。
我会实现一个更强大的电子邮件排队系统。基本上,不是在脚本中发送电子邮件,而是在数据库中插入一行,其中包含要发送的电子邮件队列。然后,您会有一个cron
或其他后台进程,它会定期检查数据库以查找要发送的电子邮件,然后批量发送它们。
此外,你可以指定一个表中的“待发送时间”,并且发件人脚本不会发送任何电子邮件,直到当前的时间是“待发送时间”之后。
睡眠()荷兰国际集团的问题是,PHP脚本会调用,执行,然后走了。为了在相对遥远的未来做些事情,你需要其他的东西。 cron
只是一个例子。你可以在Windows任务调度器中使用某些东西(你没有提到目标平台),或者编写你自己的程序。用C语言(或者甚至PHP)不断地运行,检查数据库和发送电子邮件,这并不是一个很大的工作。
脚本没有加载。我也来试试吧,我再次认为这是一个错误 – 2011-12-30 20:24:41
http://www.kirupa.com/forum/showthread.php?301942-Insert-time-delay-into-mail-sending – DGund 2011-12-30 20:25:46
@DevinGund啊,模仿真实的人的延迟。这是有道理的:-) – 2011-12-30 20:28:01
我使用PHP脚本来发送,我想时间延迟后发送电子邮件。我将为此使用sleep()。
不要。如果您在用户触发的脚本中执行此操作,则会延迟用户的最终页面呈现,直到完成睡眠呼叫。它也会在整个时间内绑定一个Apache服务器工作者。如果你有很重的负载和10秒的延迟,你可以结束自己的互联网。另外,如果用户在延迟结束之前关闭页面,则电子邮件将永远不会被发送。
使用cron或者守护进程来做到这一点。
把它放在'mail()'函数之前,它会睡觉。 – 2011-12-30 20:22:03
我会再试一次 – 2011-12-30 20:23:40