在 30 秒的执行时间内可以使用多少 mail() 函数?
-
13-09-2019 - |
题
我必须创建一个页面,向时事通讯订阅者发送电子邮件。有超过14000名订户。我想使用 php mail() 函数向他们发送电子邮件。但我担心它无法在 php 30sec max_execution_time 限制内向所有订阅者发送电子邮件。无法通过向订阅者发送测试电子邮件来测试可以发送多少电子邮件。所以我想知道在 30 秒 max_execution_time 限制内使用 mail() 函数可以发送多少电子邮件。如果您能回答我,将会非常有帮助。
还有一个问题-mysql执行时间也算在php中吗?
Apache版本2.2.13(UNIX)PHP版本5.2.11
解决方案
在PHP max_execution_time
设置是可定制的。 30
秒是默认的,但你可以将其设置为0
秒没有执行时间限制的。使用 set_time_limit()函数。
set_time_limit(0);
如果你这样做,你应该能够发送的所有电子邮件。
请小心发送多个电子邮件每秒相同的邮件服务器。你不希望被列入黑名单。
其他提示
您应该从一个cronjob运行此产卵或后台任务或用别的更适合于批处理作业。
您可能会得到14000个电子邮件出30秒,如果你的邮件服务器是速度不够快,但是当你得到一些更多的用户,会发生什么,它停止正常工作?
也许你可以在数据库中为每个用户设置一个标志,然后重置标志作为他们的电子邮件是由后台任务发送。这将有助于避免重复等等,如果有与邮件服务器出现问题。
这取决于太多的变量,不可能有单一的答案。因素包括:
- CPU的速度
- 从发送系统到 MTA 的可用带宽
- MTA 接受电子邮件的能力
找出答案的唯一方法就是尝试一下。
我有这个确切的问题而回我的项目之一。该解决方案是分离的电子邮件从实际的站点发送。
予编码的小的类,将被调用,以发送电子邮件。它会被传递一个模板电子邮件,它会再存储到的邮件队列数据库。在后端,我有一种被称为邮件脚本每X秒cron作业。脚本会查看电子邮件的数据库队列,从队列中抓住X号尝试发送(通过时间戳排序),然后将尝试交付。如果没有错误被抛出,因为发送脚本将标志着该消息。下一步将是清除来自了比X天发送和老年队列(保持记录)的所有电子邮件。
希望这是有帮助的。
说真的,如果你想在同一邮件从您的正常mailapp发送给十个人,你平时创建十个相同的邮件或者你只是发送邮件一旦加入收件人发送列表?
修改如果答案是“我送过一次”,我想你应该在这个方向在这里也(它甚至描述了如何发送给多个收件人的 http://www.php.net/mail )