如何在我的代码中设置用户事件通知?

时间:2010-10-26 14:00:33

标签: php notifications

我正在使用PHP编写团队协作Web应用程序,我有一些事件可以通过电子邮件和/或短信通知用户。我目前正在这样做的方式如下:

  • 每个用户都在数据库中将其通知设置作为布尔变量。
  • 当有人在团队页面上发表评论时,会通知用户。当调用发布注释的函数时,相同的函数将包含额外的代码,用于检查“谁想要通知这个?”然后向它们发送通知(这会稍微减慢功能)。

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我想说有一个表是一个通知队列。让发表评论的功能仍然检查“谁想要被通知这个?”但只需记录包含此表中消息的条目。然后在队列中有一个单独的进程工作,即你的cron作业建议。

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

答案 1 :(得分:1)

我使用多表方法在网站上实现了类似的方法。 users表保存了联系信息以及opt-in,opt-out选项,而事件表保存了通知的说明。其他几个事件由于其重要性而被硬编码。让网站与众不同的是用户仪表板上的“工作流程”区域,该区域还向用户显示了他们拥有的操作项目。我们发现大多数用户忽略了这些电子邮件并直接处理了该仪表板工作流区域。你会惊讶地发现人们多次改变电子邮件或完全忽略它们。

有280,000名用户和数万人的每日访问量,没有发现任何性能问题。但是,如果你不小心,排队电子邮件的过程效率很低,所以要花点时间对你的邮件发送功能进行基准测试 - 就像在邮件发送完成之前和之后回显微缩时一样容易 - 来评估它的有效性。在我当前公司的网站上,这些改进使电子邮件排队时间减少了800%(排队是生成电子邮件并通过php邮件程序将其提交给邮件系统进行分发的过程)