【问题标题】:Trigger a cron with PHP使用 PHP 触发 cron
【发布时间】:2013-11-26 17:25:32
【问题描述】:

我有一个高尔夫联赛计划的用户可以向他们的成员发送电子邮件。平均会员人数为 40 人,但有些联赛可以拥有多达 150 名会员。

电子邮件脚本使用 phpmailer 向每个成员发送个性化消息,并且运行良好。我有一个邮件页面,在脚本执行时显示发送 gif。每封电子邮件只需不到 1.5 秒的浏览器时间(在我的连接上)即可执行,因此根据发送的电子邮件数量,浏览器可能会被占用几分钟。

我想做的是将执行传递给服务器并将浏览器释放给用户,这样用户就不会盯着加载图像。

我可以通过将邮件数据存储在数据库中,然后每隔几分钟运行一次 cron 来执行邮件脚本,但我担心 cron 持续运行会导致什么问题。

有没有更好的方法来做到这一点?我确实想留在 PHPMailer

【问题讨论】:

  • 使用exec()-type 的东西来启动一个在后台执行的cli 脚本,或者将当前的PHP 脚本分叉到后台并在那里发送邮件。

标签: php cron


【解决方案1】:

这是一个不错的方法。只需保持脚本简单、经过测试并记录任何错误即可。最糟糕的情况是您的脚本占用过多,因此您可以同时运行多个脚本。

另一种方法是写一个守护进程,在这里你可以找到一个博客条目(带有更新免责声明)http://kvz.io/blog/2009/01/09/create-daemons-in-php/

【讨论】:

    【解决方案2】:

    我会通过将您需要发送的电子邮件转储到数据库中来解决这个问题。

    每隔一段时间运行一个 cron 并发送 xx 封电子邮件。如果您在共享服务器上,您可能会限制每小时可以发送的电子邮件数量(即使他们没有告诉您)。问他们,然后做出相应的计划。例如,您可能每小时只能发送 100 封电子邮件,并且实际上让它们发送出去。您的脚本可能会尝试发送更多,但它们不会发送!

    每 5 或 10 分钟检查一次未发送的电子邮件不会成为性能问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多