当新用户加入时,我必须向网站中的所有用户发送邮件。 我的问题是脚本在发送大约400封邮件后停止执行。 我已经将set_time_limit设置为0.并且在发送10封邮件后我也在睡觉(2)。
这个问题背后可能是什么原因。这个问题的解决方案。有没有更好的方法来发送批量电子邮件?
先谢谢
玫瑰
答案 0 :(得分:2)
我们这样做是在cron的帮助下完成的。
我们(在我们公司)将用户列表分成50个地址的块。这些块放在数据库的表中(包含将此块链接到电子邮件数据的数据(标题,正文,...)。
通过每隔5分钟左右触发的cron.php文件,系统会抓取数据库中需要发送的第一个可用块并发送出电子邮件。
答案 1 :(得分:0)
我遇到了类似的问题,这取决于内存的使用情况,你如何发送它们,你能提供任何代码吗?
答案 2 :(得分:0)
如果PHP在safe mode中运行,则set_time_limit
将无效。如果必须以安全模式运行PHP,则可以使用配置指令max_execution_time
修改默认时间限制。
答案 3 :(得分:0)
我不知道为什么你的脚本会停止。但您还要求更好的方式来发送批量电子邮件。我发现使用电子邮件包可以提供比内置PHP邮件命令更多的控制权。 Swift Mailer是一个非常好的。
答案 4 :(得分:0)
尝试设置任务队列。当您的Web应用程序想要发送电子邮件时,它会将其添加到任务数据库中,并且每个守护程序都会处理一个。这意味着,您可以将电子邮件设置为发送给网站的每个成员,并且您的守护程序将每2-4秒发送一封电子邮件。请参阅Kohana task queue module(PHP),Delayed_job(Ruby)和Celery(Python)以获得灵感。
答案 5 :(得分:0)
我发布了一个新答案,因为这个答案与我之前的答案无关。
我想知道:你究竟在哪里将set_time_limit
设置为0
?我的意思是,它是在php.ini,.htaccess,还是来自带有ini_set()的php文件。
是否有可能覆盖此值?