动态安排提醒电子邮件的最佳方式?什么比cron更好?

Kee*_*ung 5 php linux cron lamp

问候,我正在开发一个网络应用程序.其中一部分将允许用户安排在一天中的特定时间发送给他们的"提醒"电子邮件.完成此任务的最佳方法是什么?基本上,当我想要的是"中断"模式时,我提出的所有解决方案都以"轮询"模式运行.

以下是我提出的一些可能的解决方案:

  1. 每分钟都有一个cronjob火.触发的脚本检查数据库以查看是否有要发送的电子邮件,如果有,则发送它们,否则它会重新进入休眠状态.这样做的缺点是每分钟都会产生一些开销.此外,这可能不是一个可扩展的系统,特别是当用户数量太大以至于发送所有电子邮件可能需要一分多钟时.

  2. 与#1相同,但工作仅每15分钟触发一次.这有点易于管理,但并不完美,因为它限制了用户在15分钟标记上的提醒,并且在没有要发送的电子邮件时仍然会产生一些开销.不错,但也不完美.

  3. 让PHP exec()有一些动态改变crontab或在底层linux中安排"at"工作的代码.这将给我灵活性和"中断"类型模型我非常渴望,但会在允许PHP执行exec()linux代码方面打开一个巨大的安全漏洞.所以,我将继续把这个问题排除在外.

那么,还有什么比我想出的更好?也许是一种不使用cron来安排电子邮件的方法?我很好奇,看看你们对此有什么看法:).

OZ_*_*OZ_ 2

使用第一个变体。

发送所有电子邮件可能需要一分多钟的时间

  1. 检查 file_exists('mailing.q'); 是否存在 如果仍然存在 - 终止执行。
  2. 创建文件 mailing.q
  3. 发电子邮件
  4. 取消链接('mailing.q');

并且不要考虑开销 - 不是在这种情况下。