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