我有一个高尔夫球联盟计划的用户,可以通过电子邮件发送给他们的会员。成员的平均数是40,但有些联盟最多可以有150名成员。
电子邮件脚本使用phpmailer向每个成员发送个性化消息并且运行良好。我有一个邮件页面,在脚本执行时显示发送gif。每封电子邮件需要不到1.5秒的浏览器时间(在我的连接上)才能执行,因此根据发送的电子邮件数量,浏览器可能会被占用几分钟。
我想要做的是将执行传递给服务器并将浏览器释放回用户,这样用户就不会盯着加载图像。
我可以通过将数据存储在数据库中,然后让cron每隔几分钟运行一次来执行邮件脚本,但我会知道cron连续运行会导致什么问题。
有更好的方法吗?我确实想继续使用PHPMailer
答案 0 :(得分:0)
这是一个很好的方法。只需保持脚本简单,测试并记录任何错误。最糟糕的情况是你的脚本占用太多,所以你可以在同一时间运行许多脚本。
另一种方法是编写一个守护进程,在这里你可以找到一个博客条目(带有更新免责声明)http://kvz.io/blog/2009/01/09/create-daemons-in-php/
答案 1 :(得分:0)
我通过将您需要发送的电子邮件发送到数据库来解决这个问题。
每隔一段时间运行一次cron并发送xx电子邮件。如果您在共享服务器上,则可能限制每小时可以发送的电子邮件数量(即使他们没有告诉您)。问他们,然后相应地计划。您可能每小时只能发送100封电子邮件,并实际让它们出去。您的脚本可能会尝试发送更多内容,但它们不会发送!
每5或10分钟对未发送的电子邮件进行cron检查不会成为性能问题。