我有一个包含用户帐户的数据库以及链接到这些用户帐户的其他信息。我想为用户提供设置自动电子邮件的功能,通知他们已将新数据添加到链接到其帐户的各种表格中。
我不是在寻找完整的代码,而是在这里找到正确的方向。我一直在搜索和阅读最后一天,并且已经看到了很多不同的意见。
目标是用户将定义检查新数据的电子邮件地址和速率。例如,他们提供test@test.com和15分钟。完成此操作后,我想检查是否每15分钟将新数据添加到其帐户中,如果是,请通过电子邮件提醒他们。我写这个实际代码没有问题,只是不确定'正确'就脚本的调度和自动化而言,它可以接近它。
MySQL采用调度程序 - 我不能使用它,因为它不仅仅是严格的数据库操作。我需要实际运行PHP代码(发送电子邮件和其他东西),而不是仅仅在数据库中执行操作。
Cronjob - 我可以做这项工作,但是,它将是一个cron作业,检查我的数据库中的每个用户,并且必须检查我提供给我的用户的最低间隔(1分钟)。当然,我对数据库的初始查询只返回它实际需要检查的那些(当前时间戳是>最后一个警报时间戳+速率秒)我认为每分钟在我的数据库的整个用户集上运行这个脚本会是一个性能问题,特别是随着用户群的增长。使用此选项时,还需要对脚本进行一些文件锁定,以防止它多次运行。
软件方面 - 由于数据库与用户在其计算机上安装的软件相关联,因此我也可以使用该软件“点击”。我以用户定义的速率间隔创建的php脚本。如果他们将其设置为15分钟,那么它将每隔15分钟检查一次脚本。这也可以,但随着用户群的增长,这是对同一页面的极大数量的命中,因为每个用户帐户都会在他们的间隔设置中这样做,但是,它也只会在软件运行时发生该用户会削减该号码。
据说,有什么建议吗?积极,消极,支持和反对一种方法而不是另一种方法或其他一些我尚未遇到过的建议?
答案 0 :(得分:1)
忘记软件方面,你的检查需要驱动服务器端。
我会使用cron工作来做到这一点。你是对的,你的所有用户只有1个cron作业,但这不是问题。
想象一下,你每分钟都有一个cron工作。在cron作业中,第一项任务是根据当前时间和用户定期检查选项找到需要验证是否发生了某些事情的用户。有时候,你找不到用户检查,有时是。即使你有足够的用户,也不会花很长时间。然后,仅通过需要检查的用户进行循环,并在需要时发送电子邮件。
答案 1 :(得分:0)
我的建议不是让它以时间为基础,而是每当有新的东西发送电子邮件时。类似于当有人在社交网络上评论您的帖子时收到电子邮件。不确定这是否可以满足您的业务需求。观察者设计模式浮现在脑海中,尽管有很多方法。