2010-10-26 58 views
0

我使用PHP编写团队协作Web应用程序,并且我有一些事件通过电子邮件和/或SMS通知用户。目前我这样做的方式如下:如何在我的代码中设置用户事件通知?

  • 每个用户都在数据库中将他的通知设置为布尔变量。
  • 假设有人在团队页面发表评论时会通知用户。当发布评论的函数被调用时,相同的函数将包含额外的代码,用于检查“谁希望得到此通知?”然后向他们发送通知(这会减慢函数的速度)。

是否有更高效/更快速/更灵活的方式来设置通知?也许通过一个通过cron作业运行的脚本?还是我应该继续这样做?

我感谢您的帮助。

回答

1

我使用多表方法在网站上实现了一种类似的方法。 users表持有联系信息以及opt-in,opt-out选项,而事件表则包含要通知的说明。其他一些事件由于其重要性而被硬编码。将网站分开的东西是用户仪表板上的“工作流程”区域,它也向用户展示了他们拥有哪些操作项目。我们发现大多数用户忽略了电子邮件并直接处理该仪表板工作流程区域。你会惊讶有多少人更换电子邮件或完全忽略它们。

拥有280,000名用户和每日访问数以万计的用户,没有发现性能问题。然而,如果你不小心,排队电子邮件的过程可能是低效率的,所以请花点时间对你的邮件发送功能进行基准测试 - 就像邮件发送完成之前和之后回应microtime一样简单 - 评估其有效性。在我现在的公司网站上,这样的改进使电子邮件排队时间减少了800%(排队是生成电子邮件并通过php邮件将邮件提交给邮件系统进行分发的过程)

1

我想说有一个表是通知队列。让发表评论的函数仍然检查“谁想要通知这个?”但是只需在此表中记录包含消息的条目即可。然后从队列中单独处理工作,即您的cron工作建议。

根据您的数据库,您可能可能使用数据库事件或触发器而不是cron作业。然而这要求您的数据库允许您将数据库中的代码发送到SMS或电子邮件。这通常会带来安全风险,您可能会或可能不会在您的设置中担心。

相关问题