知道这是一个非常古老的线程,但有些人可能会遇到,所以这里是另一个建议。
此,如果只会工作:
- 您是Linux服务器
- 可以通过命令上(象exec,一些共享主机不会允许这种)
睡觉,而不是很长一段时间,我认为这是一个糟糕的做法(对于这种情况),您可能会考虑使用at命令。
虽然cron作业是重复性工作的理想选择,但如果您只想在未来某个特定时间运行一次命令,那么at
是您最好的朋友。
这就是我要如何在用户与网页互动后发送电子邮件X的时间。
例子:
$wait_time=time()+mt_rand(3600,36000);
//wait a random amount of time between 1 and 10 hours
//$wait_time=time()+1200 -if you want 20 minutes exactly.
$cmd_string=escapeshellcmd('php /path/to/script.php '.$par1.' '.$par2.' "'.$par3.'" '.$parX);
exec("echo -e '$cmd_string' | at ".date("Hi M d",$wait_time));
比你创建负责处理所有传递的参数,做任何你想做的script.php。
因此,如果我的托管服务信誉良好(例如,godaddy),我可能不必担心内存问题?谢谢你的帮助! – Dustin 2010-03-04 04:55:34
在您的PHP serverside脚本中使用sleep函数并不是一个好主意。你在睡觉时正在浪费一个网络服务器线程。另外,如果你睡得太久,服务器将会阻止你的进程,或者用户的浏览器超时并放弃。 正确的做法是使用cronjob或独立进程。 – Vlad 2010-03-04 05:04:27
你也会为自己的DoS攻击敞开大门。有些混蛋可能会在一分钟内注册几百个帐号,而睡眠Apache线程会占用你所有的内存。 – 2010-03-04 05:29:18