我必须制作一个页面,将电子邮件发送给时事通讯订阅者。有超过14000个订户。我想使用php mail()函数向他们发送电子邮件。但我担心它无法向php 30sec max_execution_time限制的所有订阅者发送电子邮件。通过向订阅者发送测试电子邮件,无法测试可以发送多少电子邮件。所以我想知道在30秒max_execution_time限制内可以使用mail()函数发送多少电子邮件。 如果你能回答我,将会非常有帮助。
另外一个问题 - mysql的执行时间是否也计入php?Apache 2.2.13版(Unix) PHP版本5.2.11
答案 0 :(得分:4)
php max_execution_time
设置是可自定义的。 30
秒是默认值,但您可以将其设置为0
秒,完全没有执行时间限制。使用set_time_limit()。
set_time_limit(0);
如果您这样做,您应该能够发送所有电子邮件。
请注意每秒向同一邮件服务器发送多封电子邮件。你不想被列入黑名单。
答案 1 :(得分:3)
您应该从cronjob运行它或生成后台任务或使用更适合批处理作业的其他任务。
如果您的邮件服务器速度足够快,您可能会在30秒内收到14000封电子邮件,但是当您获得更多订阅者并且它停止正常工作时会发生什么?
也许您可以在数据库中为每个用户设置一个标志,然后重置该标志,因为他们的电子邮件是由后台任务发送的。如果邮件服务器出现问题,这将有助于避免重复等问题。
答案 2 :(得分:2)
这取决于很多变量,单个答案是不可能的。因素包括:
找出答案的唯一方法是尝试。
答案 3 :(得分:0)
我的一个项目有一段时间我遇到了这个问题。解决方案是隔离从实际站点发送的电子邮件。
我编写了一个叫做发送电子邮件的小班。它将传递一个模板化的电子邮件,然后它将存储到邮件队列中的数据库中。在后端,我有一个cron作业,每X秒调用一次邮件脚本。脚本查看数据库队列中的电子邮件,从队列中抓取X号以尝试发送(按时间戳排序),然后尝试传递。假设没有抛出任何错误,脚本会将消息标记为已发送。下一步是清除队列中发送的所有电子邮件,这些电子邮件的发送时间超过X天(保留用于记录)。
希望这有帮助。
答案 4 :(得分:-4)
说真的,如果你想从普通的mailapp向10个人发送同样的邮件,你通常会创建10个相同的邮件,或者只是在将收件人添加到发送列表后发送邮件吗?
编辑:如果答案是“我发送一次”,我认为你也应该在这方面看一下(甚至还介绍了如何在{{3}发送给多个收件人})